summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/polygon/example
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/polygon/example')
-rw-r--r--src/boost/libs/polygon/example/Jamfile.v243
-rw-r--r--src/boost/libs/polygon/example/gtl_custom_point.cpp120
-rw-r--r--src/boost/libs/polygon/example/gtl_custom_polygon.cpp146
-rw-r--r--src/boost/libs/polygon/example/gtl_custom_polygon_set.cpp203
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_001.txt10
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_002.txt16
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_003.txt10
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_004.txt10
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_005.txt8
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_006.txt9
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_007.txt14
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_008.txt12
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_009.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_010.txt25
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_011.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/polygon/polygon_012.txt14
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_001.txt2
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_002.txt3
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_003.txt3
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_004.txt3
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_005.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_006.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_007.txt12
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_008.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_009.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_010.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_011.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_012.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_013.txt14
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_014.txt13
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_015.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_016.txt101
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_017.txt3
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_018.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_019.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_020.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_021.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_022.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_023.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_024.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_025.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_026.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_027.txt12
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_028.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_029.txt10
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_030.txt14
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_031.txt15
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_032.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_033.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_034.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_035.txt22
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_036.txt102
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_037.txt102
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_038.txt222
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_039.txt322
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_040.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_041.txt8
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_042.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_043.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_044.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_045.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_046.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_047.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_048.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_049.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_050.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_051.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_052.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_053.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_054.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_055.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_056.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_057.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_058.txt9
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_059.txt12
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_060.txt12
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_061.txt9
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_062.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_063.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_064.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_065.txt89
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_066.txt195
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_067.txt193
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_068.txt98
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_069.txt83
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_070.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_071.txt94
-rw-r--r--src/boost/libs/polygon/example/input_data/primary/primary_072.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_001.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_002.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_003.txt11
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_004.txt101
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_005.txt101
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_006.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_007.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_008.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_009.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_010.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_011.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_012.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_013.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_014.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_015.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_016.txt8
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_017.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_018.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_019.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_020.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_021.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_022.txt5
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_023.txt8
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_024.txt7
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_025.txt4
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_026.txt6
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_027.txt8
-rw-r--r--src/boost/libs/polygon/example/input_data/random/random_028.txt7
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_001.pngbin0 -> 9500 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_002.pngbin0 -> 12207 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_003.pngbin0 -> 7968 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_004.pngbin0 -> 8940 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_005.pngbin0 -> 7298 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_006.pngbin0 -> 6019 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_007.pngbin0 -> 14067 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_008.pngbin0 -> 10448 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_009.pngbin0 -> 3888 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_010.pngbin0 -> 8950 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_011.pngbin0 -> 14867 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/polygon/polygon_012.pngbin0 -> 11417 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_001.pngbin0 -> 2842 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_002.pngbin0 -> 2861 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_003.pngbin0 -> 2877 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_004.pngbin0 -> 5182 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_005.pngbin0 -> 3211 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_006.pngbin0 -> 2981 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_007.pngbin0 -> 9544 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_008.pngbin0 -> 17041 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_009.pngbin0 -> 14278 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_010.pngbin0 -> 6278 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_011.pngbin0 -> 4652 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_012.pngbin0 -> 2953 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_013.pngbin0 -> 12323 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_014.pngbin0 -> 13061 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_015.pngbin0 -> 4778 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_016.pngbin0 -> 47851 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_017.pngbin0 -> 6351 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_018.pngbin0 -> 8900 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_019.pngbin0 -> 9141 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_020.pngbin0 -> 5768 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_021.pngbin0 -> 4957 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_022.pngbin0 -> 7705 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_023.pngbin0 -> 5431 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_024.pngbin0 -> 5344 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_025.pngbin0 -> 6234 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_026.pngbin0 -> 12161 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_027.pngbin0 -> 15319 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_028.pngbin0 -> 8837 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_029.pngbin0 -> 14114 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_030.pngbin0 -> 27849 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_031.pngbin0 -> 26276 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_032.pngbin0 -> 7399 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_033.pngbin0 -> 5549 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_034.pngbin0 -> 10666 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_035.pngbin0 -> 31164 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_036.pngbin0 -> 61406 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_037.pngbin0 -> 50157 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_038.pngbin0 -> 7359 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_039.pngbin0 -> 7862 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_040.pngbin0 -> 8257 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_041.pngbin0 -> 7631 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_042.pngbin0 -> 10438 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_043.pngbin0 -> 10944 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_044.pngbin0 -> 9482 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_045.pngbin0 -> 12269 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_046.pngbin0 -> 8573 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_047.pngbin0 -> 7449 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_048.pngbin0 -> 11755 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_049.pngbin0 -> 14124 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_050.pngbin0 -> 5447 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_051.pngbin0 -> 12672 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_052.pngbin0 -> 7824 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_053.pngbin0 -> 6396 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_054.pngbin0 -> 11227 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_055.pngbin0 -> 12364 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_056.pngbin0 -> 4297 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_057.pngbin0 -> 7456 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_058.pngbin0 -> 11550 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_059.pngbin0 -> 13852 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_060.pngbin0 -> 13852 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_061.pngbin0 -> 12784 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_062.pngbin0 -> 6202 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_063.pngbin0 -> 10667 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_064.pngbin0 -> 12733 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_065.pngbin0 -> 38011 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_066.pngbin0 -> 48815 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_067.pngbin0 -> 47665 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_068.pngbin0 -> 42123 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_069.pngbin0 -> 36872 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_070.pngbin0 -> 5049 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_071.pngbin0 -> 37845 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/primary/primary_072.pngbin0 -> 4264 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_001.pngbin0 -> 8550 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_002.pngbin0 -> 7787 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_003.pngbin0 -> 7724 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_004.pngbin0 -> 27628 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_005.pngbin0 -> 27628 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_006.pngbin0 -> 8754 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_007.pngbin0 -> 10159 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_008.pngbin0 -> 11149 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_009.pngbin0 -> 10923 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_010.pngbin0 -> 9809 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_011.pngbin0 -> 9952 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_012.pngbin0 -> 7909 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_013.pngbin0 -> 12090 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_014.pngbin0 -> 11311 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_015.pngbin0 -> 8121 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_016.pngbin0 -> 12758 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_017.pngbin0 -> 8311 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_018.pngbin0 -> 9593 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_019.pngbin0 -> 11819 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_020.pngbin0 -> 12134 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_021.pngbin0 -> 9570 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_022.pngbin0 -> 9476 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_023.pngbin0 -> 10424 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_024.pngbin0 -> 9721 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_025.pngbin0 -> 7163 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_026.pngbin0 -> 11099 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_027.pngbin0 -> 12574 bytes
-rw-r--r--src/boost/libs/polygon/example/output_data/random/random_028.pngbin0 -> 12887 bytes
-rw-r--r--src/boost/libs/polygon/example/voronoi_advanced_tutorial.cpp145
-rw-r--r--src/boost/libs/polygon/example/voronoi_basic_tutorial.cpp198
-rw-r--r--src/boost/libs/polygon/example/voronoi_visual_utils.hpp186
-rw-r--r--src/boost/libs/polygon/example/voronoi_visualizer.cpp509
232 files changed, 4113 insertions, 0 deletions
diff --git a/src/boost/libs/polygon/example/Jamfile.v2 b/src/boost/libs/polygon/example/Jamfile.v2
new file mode 100644
index 00000000..a8dc212c
--- /dev/null
+++ b/src/boost/libs/polygon/example/Jamfile.v2
@@ -0,0 +1,43 @@
+# Copyright Andrii Sydorchuk 2010-2012.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import cast ;
+import testing ;
+
+lib opengl : : <name>opengl32 ;
+
+project voronoi_example
+ :
+ requirements
+ <include>.
+ <toolset>msvc:<asynch-exceptions>on
+ <library>$(BOOST_ROOT)/libs/timer/build//boost_timer
+ ;
+
+exe voronoi-visualizer
+ :
+ voronoi_visualizer.cpp
+ [ cast _ moccable-cpp : voronoi_visualizer.cpp ]
+ /qt//QtOpenGL
+ :
+ <target-os>windows:<library>opengl
+ ;
+
+alias "basic-tutorial"
+ :
+ [ run voronoi_basic_tutorial.cpp ]
+ ;
+
+alias "advanced-tutorial"
+ :
+ [ run voronoi_advanced_tutorial.cpp ]
+ ;
+
+alias "documentation-examples"
+ :
+ [ run gtl_custom_point.cpp ]
+ [ run gtl_custom_polygon.cpp ]
+ [ run gtl_custom_polygon_set.cpp ]
+ ;
diff --git a/src/boost/libs/polygon/example/gtl_custom_point.cpp b/src/boost/libs/polygon/example/gtl_custom_point.cpp
new file mode 100644
index 00000000..665c82ed
--- /dev/null
+++ b/src/boost/libs/polygon/example/gtl_custom_point.cpp
@@ -0,0 +1,120 @@
+/*
+Copyright 2008 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include <boost/polygon/polygon.hpp>
+#include <cassert>
+namespace gtl = boost::polygon;
+using namespace boost::polygon::operators;
+
+//lets make the body of main from point_usage.cpp
+//a generic function parameterized by point type
+template <typename Point>
+void test_point() {
+ //constructing a gtl point
+ int x = 10;
+ int y = 20;
+ //Point pt(x, y);
+ Point pt = gtl::construct<Point>(x, y);
+ assert(gtl::x(pt) == 10);
+ assert(gtl::y(pt) == 20);
+
+ //a quick primer in isotropic point access
+ typedef gtl::orientation_2d O;
+ using gtl::HORIZONTAL;
+ using gtl::VERTICAL;
+ O o = HORIZONTAL;
+ assert(gtl::x(pt) == gtl::get(pt, o));
+
+ o = o.get_perpendicular();
+ assert(o == VERTICAL);
+ assert(gtl::y(pt) == gtl::get(pt, o));
+
+ gtl::set(pt, o, 30);
+ assert(gtl::y(pt) == 30);
+
+ //using some of the library functions
+ //Point pt2(10, 30);
+ Point pt2 = gtl::construct<Point>(10, 30);
+ assert(gtl::equivalence(pt, pt2));
+
+ gtl::transformation<int> tr(gtl::axis_transformation::SWAP_XY);
+ gtl::transform(pt, tr);
+ assert(gtl::equivalence(pt, gtl::construct<Point>(30, 10)));
+
+ gtl::transformation<int> tr2 = tr.inverse();
+ assert(tr == tr2); //SWAP_XY is its own inverse transform
+
+ gtl::transform(pt, tr2);
+ assert(gtl::equivalence(pt, pt2)); //the two points are equal again
+
+ gtl::move(pt, o, 10); //move pt 10 units in y
+ assert(gtl::euclidean_distance(pt, pt2) == 10.0f);
+
+ gtl::move(pt, o.get_perpendicular(), 10); //move pt 10 units in x
+ assert(gtl::manhattan_distance(pt, pt2) == 20);
+}
+
+//Now lets declare our own point type
+//Bjarne says that if a class doesn't maintain an
+//invariant just use a struct.
+struct CPoint {
+ int x;
+ int y;
+};
+
+//There, nice a simple...but wait, it doesn't do anything
+//how do we use it to do all the things a point needs to do?
+
+
+//First we register it as a point with boost polygon
+namespace boost { namespace polygon {
+ template <>
+ struct geometry_concept<CPoint> { typedef point_concept type; };
+
+
+ //Then we specialize the gtl point traits for our point type
+ template <>
+ struct point_traits<CPoint> {
+ typedef int coordinate_type;
+
+ static inline coordinate_type get(const CPoint& point,
+ orientation_2d orient) {
+ if(orient == HORIZONTAL)
+ return point.x;
+ return point.y;
+ }
+ };
+
+ template <>
+ struct point_mutable_traits<CPoint> {
+ typedef int coordinate_type;
+
+
+ static inline void set(CPoint& point, orientation_2d orient, int value) {
+ if(orient == HORIZONTAL)
+ point.x = value;
+ else
+ point.y = value;
+ }
+ static inline CPoint construct(int x_value, int y_value) {
+ CPoint retval;
+ retval.x = x_value;
+ retval.y = y_value;
+ return retval;
+ }
+ };
+ } }
+
+//Now lets see if the CPoint works with the library functions
+int main() {
+ test_point<CPoint>(); //yay! All your testing is done for you.
+ return 0;
+}
+
+//Now you know how to map a user type to the library point concept
+//and how to write a generic function parameterized by point type
+//using the library interfaces to access it.
diff --git a/src/boost/libs/polygon/example/gtl_custom_polygon.cpp b/src/boost/libs/polygon/example/gtl_custom_polygon.cpp
new file mode 100644
index 00000000..f42dea1d
--- /dev/null
+++ b/src/boost/libs/polygon/example/gtl_custom_polygon.cpp
@@ -0,0 +1,146 @@
+/*
+Copyright 2008 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include <boost/polygon/polygon.hpp>
+#include <cassert>
+#include <list>
+namespace gtl = boost::polygon;
+using namespace boost::polygon::operators;
+
+//first lets turn our polygon usage code into a generic
+//function parameterized by polygon type
+template <typename Polygon>
+void test_polygon() {
+ //lets construct a 10x10 rectangle shaped polygon
+ typedef typename gtl::polygon_traits<Polygon>::point_type Point;
+ Point pts[] = {gtl::construct<Point>(0, 0),
+ gtl::construct<Point>(10, 0),
+ gtl::construct<Point>(10, 10),
+ gtl::construct<Point>(0, 10) };
+ Polygon poly;
+ gtl::set_points(poly, pts, pts+4);
+
+ //now lets see what we can do with this polygon
+ assert(gtl::area(poly) == 100.0f);
+ assert(gtl::contains(poly, gtl::construct<Point>(5, 5)));
+ assert(!gtl::contains(poly, gtl::construct<Point>(15, 5)));
+ gtl::rectangle_data<int> rect;
+ assert(gtl::extents(rect, poly)); //get bounding box of poly
+ assert(gtl::equivalence(rect, poly)); //hey, that's slick
+ assert(gtl::winding(poly) == gtl::COUNTERCLOCKWISE);
+ assert(gtl::perimeter(poly) == 40.0f);
+
+ //add 5 to all coords of poly
+ gtl::convolve(poly, gtl::construct<Point>(5, 5));
+ //multiply all coords of poly by 2
+ gtl::scale_up(poly, 2);
+ gtl::set_points(rect, gtl::point_data<int>(10, 10),
+ gtl::point_data<int>(30, 30));
+ assert(gtl::equivalence(poly, rect));
+}
+
+//Now lets declare our own polygon class
+//Oops, we need a point class to support our polygon, lets borrow
+//the CPoint example
+struct CPoint {
+ int x;
+ int y;
+};
+
+//we have to get CPoint working with boost polygon to make our polygon
+//that uses CPoint working with boost polygon
+namespace boost { namespace polygon {
+ template <>
+ struct geometry_concept<CPoint> { typedef point_concept type; };
+ template <>
+ struct point_traits<CPoint> {
+ typedef int coordinate_type;
+
+ static inline coordinate_type get(const CPoint& point,
+ orientation_2d orient) {
+ if(orient == HORIZONTAL)
+ return point.x;
+ return point.y;
+ }
+ };
+
+ template <>
+ struct point_mutable_traits<CPoint> {
+ typedef int coordinate_type;
+
+ static inline void set(CPoint& point, orientation_2d orient, int value) {
+ if(orient == HORIZONTAL)
+ point.x = value;
+ else
+ point.y = value;
+ }
+ static inline CPoint construct(int x_value, int y_value) {
+ CPoint retval;
+ retval.x = x_value;
+ retval.y = y_value;
+ return retval;
+ }
+ };
+ } }
+
+//I'm lazy and use the stl everywhere to avoid writing my own classes
+//my toy polygon is a std::list<CPoint>
+typedef std::list<CPoint> CPolygon;
+
+//we need to specialize our polygon concept mapping in boost polygon
+namespace boost { namespace polygon {
+ //first register CPolygon as a polygon_concept type
+ template <>
+ struct geometry_concept<CPolygon>{ typedef polygon_concept type; };
+
+ template <>
+ struct polygon_traits<CPolygon> {
+ typedef int coordinate_type;
+ typedef CPolygon::const_iterator iterator_type;
+ typedef CPoint point_type;
+
+ // Get the begin iterator
+ static inline iterator_type begin_points(const CPolygon& t) {
+ return t.begin();
+ }
+
+ // Get the end iterator
+ static inline iterator_type end_points(const CPolygon& t) {
+ return t.end();
+ }
+
+ // Get the number of sides of the polygon
+ static inline std::size_t size(const CPolygon& t) {
+ return t.size();
+ }
+
+ // Get the winding direction of the polygon
+ static inline winding_direction winding(const CPolygon& t) {
+ return unknown_winding;
+ }
+ };
+
+ template <>
+ struct polygon_mutable_traits<CPolygon> {
+ //expects stl style iterators
+ template <typename iT>
+ static inline CPolygon& set_points(CPolygon& t,
+ iT input_begin, iT input_end) {
+ t.clear();
+ t.insert(t.end(), input_begin, input_end);
+ return t;
+ }
+
+ };
+ } }
+
+//now there's nothing left to do but test that our polygon
+//works with library interfaces
+int main() {
+ test_polygon<CPolygon>(); //woot!
+ return 0;
+}
diff --git a/src/boost/libs/polygon/example/gtl_custom_polygon_set.cpp b/src/boost/libs/polygon/example/gtl_custom_polygon_set.cpp
new file mode 100644
index 00000000..4599031f
--- /dev/null
+++ b/src/boost/libs/polygon/example/gtl_custom_polygon_set.cpp
@@ -0,0 +1,203 @@
+/*
+Copyright 2008 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include <boost/polygon/polygon.hpp>
+#include <list>
+#include <time.h>
+#include <cassert>
+#include <deque>
+#include <iostream>
+namespace gtl = boost::polygon;
+using namespace boost::polygon::operators;
+
+//once again we make our usage of the library generic
+//and parameterize it on the polygon set type
+template <typename PolygonSet>
+void test_polygon_set() {
+ using namespace gtl;
+ PolygonSet ps;
+ ps += rectangle_data<int>(0, 0, 10, 10);
+ PolygonSet ps2;
+ ps2 += rectangle_data<int>(5, 5, 15, 15);
+ PolygonSet ps3;
+ assign(ps3, ps * ps2);
+ PolygonSet ps4;
+ ps4 += ps + ps2;
+ assert(area(ps4) == area(ps) + area(ps2) - area(ps3));
+ assert(equivalence((ps + ps2) - (ps * ps2), ps ^ ps2));
+ rectangle_data<int> rect;
+ assert(extents(rect, ps ^ ps2));
+ assert(area(rect) == 225);
+ assert(area(rect ^ (ps ^ ps2)) == area(rect) - area(ps ^ ps2));
+}
+
+//first thing is first, lets include all the code from previous examples
+
+//the CPoint example
+struct CPoint {
+ int x;
+ int y;
+};
+
+namespace boost { namespace polygon {
+ template <>
+ struct geometry_concept<CPoint> { typedef point_concept type; };
+ template <>
+ struct point_traits<CPoint> {
+ typedef int coordinate_type;
+
+ static inline coordinate_type get(const CPoint& point,
+ orientation_2d orient) {
+ if(orient == HORIZONTAL)
+ return point.x;
+ return point.y;
+ }
+ };
+
+ template <>
+ struct point_mutable_traits<CPoint> {
+ typedef int coordinate_type;
+
+ static inline void set(CPoint& point, orientation_2d orient, int value) {
+ if(orient == HORIZONTAL)
+ point.x = value;
+ else
+ point.y = value;
+ }
+ static inline CPoint construct(int x_value, int y_value) {
+ CPoint retval;
+ retval.x = x_value;
+ retval.y = y_value;
+ return retval;
+ }
+ };
+ } }
+
+//the CPolygon example
+typedef std::list<CPoint> CPolygon;
+
+//we need to specialize our polygon concept mapping in boost polygon
+namespace boost { namespace polygon {
+ //first register CPolygon as a polygon_concept type
+ template <>
+ struct geometry_concept<CPolygon>{ typedef polygon_concept type; };
+
+ template <>
+ struct polygon_traits<CPolygon> {
+ typedef int coordinate_type;
+ typedef CPolygon::const_iterator iterator_type;
+ typedef CPoint point_type;
+
+ // Get the begin iterator
+ static inline iterator_type begin_points(const CPolygon& t) {
+ return t.begin();
+ }
+
+ // Get the end iterator
+ static inline iterator_type end_points(const CPolygon& t) {
+ return t.end();
+ }
+
+ // Get the number of sides of the polygon
+ static inline std::size_t size(const CPolygon& t) {
+ return t.size();
+ }
+
+ // Get the winding direction of the polygon
+ static inline winding_direction winding(const CPolygon& t) {
+ return unknown_winding;
+ }
+ };
+
+ template <>
+ struct polygon_mutable_traits<CPolygon> {
+ //expects stl style iterators
+ template <typename iT>
+ static inline CPolygon& set_points(CPolygon& t,
+ iT input_begin, iT input_end) {
+ t.clear();
+ while(input_begin != input_end) {
+ t.push_back(CPoint());
+ gtl::assign(t.back(), *input_begin);
+ ++input_begin;
+ }
+ return t;
+ }
+
+ };
+ } }
+
+//OK, finally we get to declare our own polygon set type
+typedef std::deque<CPolygon> CPolygonSet;
+
+//deque isn't automatically a polygon set in the library
+//because it is a standard container there is a shortcut
+//for mapping it to polygon set concept, but I'll do it
+//the long way that you would use in the general case.
+namespace boost { namespace polygon {
+ //first we register CPolygonSet as a polygon set
+ template <>
+ struct geometry_concept<CPolygonSet> { typedef polygon_set_concept type; };
+
+ //next we map to the concept through traits
+ template <>
+ struct polygon_set_traits<CPolygonSet> {
+ typedef int coordinate_type;
+ typedef CPolygonSet::const_iterator iterator_type;
+ typedef CPolygonSet operator_arg_type;
+
+ static inline iterator_type begin(const CPolygonSet& polygon_set) {
+ return polygon_set.begin();
+ }
+
+ static inline iterator_type end(const CPolygonSet& polygon_set) {
+ return polygon_set.end();
+ }
+
+ //don't worry about these, just return false from them
+ static inline bool clean(const CPolygonSet& polygon_set) { return false; }
+ static inline bool sorted(const CPolygonSet& polygon_set) { return false; }
+ };
+
+ template <>
+ struct polygon_set_mutable_traits<CPolygonSet> {
+ template <typename input_iterator_type>
+ static inline void set(CPolygonSet& polygon_set, input_iterator_type input_begin, input_iterator_type input_end) {
+ polygon_set.clear();
+ //this is kind of cheesy. I am copying the unknown input geometry
+ //into my own polygon set and then calling get to populate the
+ //deque
+ polygon_set_data<int> ps;
+ ps.insert(input_begin, input_end);
+ ps.get(polygon_set);
+ //if you had your own odd-ball polygon set you would probably have
+ //to iterate through each polygon at this point and do something
+ //extra
+ }
+ };
+} }
+
+int main() {
+ long long c1 = clock();
+ for(int i = 0; i < 1000; ++i)
+ test_polygon_set<CPolygonSet>();
+ long long c2 = clock();
+ for(int i = 0; i < 1000; ++i)
+ test_polygon_set<gtl::polygon_set_data<int> >();
+ long long c3 = clock();
+ long long diff1 = c2 - c1;
+ long long diff2 = c3 - c2;
+ if(diff1 > 0 && diff2)
+ std::cout << "library polygon_set_data is " << float(diff1)/float(diff2) << "X faster than custom polygon set deque of CPolygon" << std::endl;
+ else
+ std::cout << "operation was too fast" << std::endl;
+ return 0;
+}
+
+//Now you know how to map your own data type to polygon set concept
+//Now you also know how to make your application code that operates on geometry
+//data type agnostic from point through polygon set
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_001.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_001.txt
new file mode 100644
index 00000000..5bbb057e
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_001.txt
@@ -0,0 +1,10 @@
+0
+8
+0 0 -3 5
+-3 5 2 10
+2 10 4 6
+4 6 10 12
+10 12 13 6
+13 6 11 1
+11 1 5 1
+5 1 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_002.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_002.txt
new file mode 100644
index 00000000..486bd911
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_002.txt
@@ -0,0 +1,16 @@
+0
+14
+0 0 -3 5
+-3 5 2 10
+2 10 4 6
+4 6 10 12
+10 12 13 6
+13 6 11 1
+11 1 5 1
+5 1 0 0
+1 2 0 5
+0 5 5 2
+5 2 1 2
+10 3 8 6
+8 6 10 8
+10 8 10 3 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_003.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_003.txt
new file mode 100644
index 00000000..42924605
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_003.txt
@@ -0,0 +1,10 @@
+0
+8
+0 0 0 8
+0 8 4 12
+4 12 9 13
+9 13 13 13
+13 13 13 4
+13 4 10 0
+10 0 5 -1
+5 -1 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_004.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_004.txt
new file mode 100644
index 00000000..bb5a50bd
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_004.txt
@@ -0,0 +1,10 @@
+0
+8
+0 0 0 8
+0 8 4 12
+4 12 9 13
+9 13 7 7
+7 7 13 4
+13 4 10 0
+10 0 5 -1
+5 -1 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_005.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_005.txt
new file mode 100644
index 00000000..7825f926
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_005.txt
@@ -0,0 +1,8 @@
+0
+6
+0 0 10 0
+10 0 16 -6
+16 -6 22 0
+22 0 22 -12
+22 -12 10 -12
+10 -12 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_006.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_006.txt
new file mode 100644
index 00000000..064dded3
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_006.txt
@@ -0,0 +1,9 @@
+0
+7
+0 0 0 10
+0 10 6 10
+6 10 10 7
+10 7 14 10
+14 10 20 10
+20 10 20 0
+20 0 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_007.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_007.txt
new file mode 100644
index 00000000..af811fe6
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_007.txt
@@ -0,0 +1,14 @@
+0
+12
+0 0 8 3
+8 3 10 13
+10 13 16 6
+16 6 16 15
+16 15 25 10
+25 10 15 1
+15 1 27 -1
+27 -1 14 -4
+14 -4 13 3
+13 3 11 -5
+11 -5 10 0
+10 0 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_008.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_008.txt
new file mode 100644
index 00000000..65985418
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_008.txt
@@ -0,0 +1,12 @@
+0
+10
+0 0 1 8
+1 8 10 7
+10 7 20 10
+20 10 25 9
+25 9 28 5
+28 5 23 -2
+23 -2 24 -7
+24 -7 13 -9
+13 -9 10 -3
+10 -3 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_009.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_009.txt
new file mode 100644
index 00000000..863e93fb
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_009.txt
@@ -0,0 +1,6 @@
+0
+4
+0 0 0 10
+0 10 30 10
+30 10 30 0
+30 0 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_010.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_010.txt
new file mode 100644
index 00000000..3dc6cf98
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_010.txt
@@ -0,0 +1,25 @@
+0
+23
+-12 4 -12 -4
+-12 -4 -8 -4
+-8 -4 -8 -1
+-8 -1 -9 0
+-9 0 -8 1
+-8 1 -8 4
+-8 4 -12 4
+-4 4 -4 -4
+-4 -4 0 -4
+0 -4 0 4
+0 4 -4 4
+4 4 4 -4
+4 -4 8 -4
+8 -4 8 4
+8 4 4 4
+-4 -8 -8 -8
+-8 -8 -8 -12
+-8 -12 -4 -12
+-4 -12 -4 -16
+-4 -16 -8 -16
+0 -8 2 -8
+2 -8 4 -8
+2 -8 2 -16
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_011.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_011.txt
new file mode 100644
index 00000000..34ec6a54
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_011.txt
@@ -0,0 +1,11 @@
+0
+9
+0 0 1 10
+1 10 4 9
+4 9 4 2
+4 2 0 0
+5 5 6 8
+6 8 10 10
+10 10 9 1
+9 1 6 2
+6 2 5 5 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/polygon/polygon_012.txt b/src/boost/libs/polygon/example/input_data/polygon/polygon_012.txt
new file mode 100644
index 00000000..c338d977
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/polygon/polygon_012.txt
@@ -0,0 +1,14 @@
+0
+12
+0 0 100 0
+100 0 100 100
+100 100 0 100
+0 100 0 0
+15 15 60 20
+60 20 87 23
+60 20 57 47
+15 85 30 80
+30 80 25 65
+30 80 60 70
+60 70 75 65
+60 70 65 85 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_001.txt b/src/boost/libs/polygon/example/input_data/primary/primary_001.txt
new file mode 100644
index 00000000..5b553c0d
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_001.txt
@@ -0,0 +1,2 @@
+1
+0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_002.txt b/src/boost/libs/polygon/example/input_data/primary/primary_002.txt
new file mode 100644
index 00000000..0b455147
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_002.txt
@@ -0,0 +1,3 @@
+2
+0 0
+1 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_003.txt b/src/boost/libs/polygon/example/input_data/primary/primary_003.txt
new file mode 100644
index 00000000..fdbbf7a7
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_003.txt
@@ -0,0 +1,3 @@
+2
+0 0
+0 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_004.txt b/src/boost/libs/polygon/example/input_data/primary/primary_004.txt
new file mode 100644
index 00000000..c64ab212
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_004.txt
@@ -0,0 +1,3 @@
+2
+0 0
+1 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_005.txt b/src/boost/libs/polygon/example/input_data/primary/primary_005.txt
new file mode 100644
index 00000000..bbadf557
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_005.txt
@@ -0,0 +1,11 @@
+10
+0 0
+0 1
+0 2
+0 3
+0 4
+0 -1
+0 -2
+0 -3
+0 -4
+0 -5 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_006.txt b/src/boost/libs/polygon/example/input_data/primary/primary_006.txt
new file mode 100644
index 00000000..eb7aea42
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_006.txt
@@ -0,0 +1,11 @@
+10
+0 0
+1 0
+2 0
+3 0
+4 0
+5 0
+-1 0
+-2 0
+-3 0
+-4 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_007.txt b/src/boost/libs/polygon/example/input_data/primary/primary_007.txt
new file mode 100644
index 00000000..88ac7796
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_007.txt
@@ -0,0 +1,12 @@
+11
+0 0
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 9
+10 10 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_008.txt b/src/boost/libs/polygon/example/input_data/primary/primary_008.txt
new file mode 100644
index 00000000..9f4b6f05
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_008.txt
@@ -0,0 +1,11 @@
+10
+-46 -37
+-40 -30
+-34 -23
+-28 -16
+-22 -09
+-16 -02
+-10 05
+-04 12
+02 19
+08 26 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_009.txt b/src/boost/libs/polygon/example/input_data/primary/primary_009.txt
new file mode 100644
index 00000000..99f5f0c5
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_009.txt
@@ -0,0 +1,11 @@
+10
+33333 11111
+66666 0
+99999 -11111
+133332 -22222
+166665 -33333
+199998 -44444
+233331 -55555
+266664 -66666
+299997 -77777
+333330 -88888 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_010.txt b/src/boost/libs/polygon/example/input_data/primary/primary_010.txt
new file mode 100644
index 00000000..4dbbd936
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_010.txt
@@ -0,0 +1,4 @@
+3
+0 0
+2005 2005
+10025 10025 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_011.txt b/src/boost/libs/polygon/example/input_data/primary/primary_011.txt
new file mode 100644
index 00000000..2573f612
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_011.txt
@@ -0,0 +1,4 @@
+3
+0 0
+0 4
+1 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_012.txt b/src/boost/libs/polygon/example/input_data/primary/primary_012.txt
new file mode 100644
index 00000000..a14a3f91
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_012.txt
@@ -0,0 +1,5 @@
+4
+0 0
+0 1
+1 0
+1 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_013.txt b/src/boost/libs/polygon/example/input_data/primary/primary_013.txt
new file mode 100644
index 00000000..494c527c
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_013.txt
@@ -0,0 +1,14 @@
+13
+0 5
+0 -5
+-4 -3
+4 -3
+4 3
+-4 3
+3 -4
+-3 4
+-3 -4
+3 4
+-5 0
+5 0
+0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_014.txt b/src/boost/libs/polygon/example/input_data/primary/primary_014.txt
new file mode 100644
index 00000000..72b1accd
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_014.txt
@@ -0,0 +1,13 @@
+12
+0 5
+0 -5
+-4 -3
+4 -3
+4 3
+-4 3
+3 -4
+-3 4
+-3 -4
+3 4
+-5 0
+5 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_015.txt b/src/boost/libs/polygon/example/input_data/primary/primary_015.txt
new file mode 100644
index 00000000..f228af2a
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_015.txt
@@ -0,0 +1,5 @@
+4
+4 3
+4 8
+9 2
+9 9 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_016.txt b/src/boost/libs/polygon/example/input_data/primary/primary_016.txt
new file mode 100644
index 00000000..4deb8868
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_016.txt
@@ -0,0 +1,101 @@
+100
+100 0
+99 6
+99 12
+98 18
+96 24
+95 30
+92 36
+90 42
+87 48
+84 53
+80 58
+77 63
+72 68
+68 72
+63 77
+58 80
+53 84
+48 87
+42 90
+36 92
+30 95
+24 96
+18 98
+12 99
+6 99
+0 99
+-6 99
+-12 99
+-18 98
+-24 96
+-30 95
+-36 93
+-42 90
+-48 87
+-53 84
+-58 80
+-63 77
+-68 72
+-72 68
+-76 63
+-80 58
+-84 53
+-87 48
+-90 42
+-92 36
+-95 31
+-96 25
+-98 18
+-99 12
+-99 6
+-99 0
+-99 -6
+-99 -12
+-98 -18
+-96 -24
+-95 -30
+-93 -36
+-90 -42
+-87 -48
+-84 -53
+-81 -58
+-77 -63
+-73 -68
+-68 -72
+-63 -76
+-58 -80
+-53 -84
+-48 -87
+-42 -90
+-37 -92
+-31 -95
+-25 -96
+-18 -98
+-12 -99
+-6 -99
+0 -99
+6 -99
+12 -99
+18 -98
+24 -96
+30 -95
+36 -93
+42 -90
+47 -87
+53 -84
+58 -81
+63 -77
+68 -73
+72 -68
+76 -63
+80 -59
+84 -53
+87 -48
+90 -42
+92 -37
+95 -31
+96 -25
+98 -19
+99 -12
+99 -6 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_017.txt b/src/boost/libs/polygon/example/input_data/primary/primary_017.txt
new file mode 100644
index 00000000..57e3cccd
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_017.txt
@@ -0,0 +1,3 @@
+0
+1
+0 0 1 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_018.txt b/src/boost/libs/polygon/example/input_data/primary/primary_018.txt
new file mode 100644
index 00000000..013611c3
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_018.txt
@@ -0,0 +1,6 @@
+2
+3 1
+1 3
+1
+0 0
+4 4 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_019.txt b/src/boost/libs/polygon/example/input_data/primary/primary_019.txt
new file mode 100644
index 00000000..4068a329
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_019.txt
@@ -0,0 +1,5 @@
+2
+3 2
+2 3
+1
+4 0 0 4 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_020.txt b/src/boost/libs/polygon/example/input_data/primary/primary_020.txt
new file mode 100644
index 00000000..c1e81b4b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_020.txt
@@ -0,0 +1,7 @@
+3
+-2 -2
+-2 4
+-2 10
+1
+0 0
+0 8 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_021.txt b/src/boost/libs/polygon/example/input_data/primary/primary_021.txt
new file mode 100644
index 00000000..c4212531
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_021.txt
@@ -0,0 +1,4 @@
+1
+-1 1
+1
+1 0 1 2 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_022.txt b/src/boost/libs/polygon/example/input_data/primary/primary_022.txt
new file mode 100644
index 00000000..07849421
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_022.txt
@@ -0,0 +1,5 @@
+0
+3
+0 0 4 0
+4 0 0 4
+0 4 4 4 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_023.txt b/src/boost/libs/polygon/example/input_data/primary/primary_023.txt
new file mode 100644
index 00000000..75cb14a6
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_023.txt
@@ -0,0 +1,6 @@
+0
+4
+0 0 4 0
+4 0 4 4
+4 4 0 4
+0 4 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_024.txt b/src/boost/libs/polygon/example/input_data/primary/primary_024.txt
new file mode 100644
index 00000000..66ac2d8b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_024.txt
@@ -0,0 +1,4 @@
+0
+2
+0 0 4 0
+2 2 2 4 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_025.txt b/src/boost/libs/polygon/example/input_data/primary/primary_025.txt
new file mode 100644
index 00000000..a6eeea27
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_025.txt
@@ -0,0 +1,5 @@
+1
+5 6
+2
+0 0 4 0
+2 2 2 4 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_026.txt b/src/boost/libs/polygon/example/input_data/primary/primary_026.txt
new file mode 100644
index 00000000..834264e3
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_026.txt
@@ -0,0 +1,6 @@
+2
+0 0
+1 6
+2
+-4 5 5 -1
+3 -11 13 -1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_027.txt b/src/boost/libs/polygon/example/input_data/primary/primary_027.txt
new file mode 100644
index 00000000..710e8a8c
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_027.txt
@@ -0,0 +1,12 @@
+2
+0 0
+1 6
+8
+-6 5 2 -7
+3 -11 13 -1
+-4 5 5 -1
+4 4 11 4
+4 4 8 10
+11 4 8 10
+8 10 5 13
+8 10 11 13 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_028.txt b/src/boost/libs/polygon/example/input_data/primary/primary_028.txt
new file mode 100644
index 00000000..1ed194d6
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_028.txt
@@ -0,0 +1,5 @@
+0
+3
+0 0 4 2
+4 2 4 -2
+4 -2 0 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_029.txt b/src/boost/libs/polygon/example/input_data/primary/primary_029.txt
new file mode 100644
index 00000000..3ca79ed6
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_029.txt
@@ -0,0 +1,10 @@
+0
+8
+0 0 0 1
+0 0 1 0
+0 0 -1 0
+0 0 0 -1
+0 0 1 1
+0 0 1 -1
+0 0 -1 1
+0 0 -1 -1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_030.txt b/src/boost/libs/polygon/example/input_data/primary/primary_030.txt
new file mode 100644
index 00000000..fde6cac2
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_030.txt
@@ -0,0 +1,14 @@
+0
+12
+-1 10 1 10
+10 -1 10 1
+-1 -10 1 -10
+-10 -1 -10 1
+-6 8 -2 11
+-8 6 -11 2
+6 8 2 11
+8 6 11 2
+6 -8 2 -11
+8 -6 11 -2
+-6 -8 -2 -11
+-8 -6 -11 -2 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_031.txt b/src/boost/libs/polygon/example/input_data/primary/primary_031.txt
new file mode 100644
index 00000000..d60d5cee
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_031.txt
@@ -0,0 +1,15 @@
+1
+0 0
+12
+-1 10 1 10
+10 -1 10 1
+-1 -10 1 -10
+-10 -1 -10 1
+-6 8 -2 11
+-8 6 -11 2
+6 8 2 11
+8 6 11 2
+6 -8 2 -11
+8 -6 11 -2
+-6 -8 -2 -11
+-8 -6 -11 -2 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_032.txt b/src/boost/libs/polygon/example/input_data/primary/primary_032.txt
new file mode 100644
index 00000000..40617faa
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_032.txt
@@ -0,0 +1,6 @@
+3
+0 -4
+2 8
+-16 15
+1
+7 20 7 -20
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_033.txt b/src/boost/libs/polygon/example/input_data/primary/primary_033.txt
new file mode 100644
index 00000000..65514eed
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_033.txt
@@ -0,0 +1,7 @@
+4
+-6 6
+-5 6
+-4 6
+-3 6
+1
+0 0 0 7 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_034.txt b/src/boost/libs/polygon/example/input_data/primary/primary_034.txt
new file mode 100644
index 00000000..d4e0b97d
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_034.txt
@@ -0,0 +1,6 @@
+0
+4
+0 -4 2 8
+2 8 -16 15
+0 -4 -16 15
+7 20 7 -20
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_035.txt b/src/boost/libs/polygon/example/input_data/primary/primary_035.txt
new file mode 100644
index 00000000..dce66e78
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_035.txt
@@ -0,0 +1,22 @@
+0
+20
+100 0 95 30
+95 30 80 58
+80 58 58 80
+58 80 30 95
+30 95 0 99
+0 99 -30 95
+-30 95 -58 80
+-58 80 -80 58
+-80 58 -95 30
+-95 30 -99 0
+-99 0 -95 -30
+-95 -30 -80 -58
+-80 -58 -58 -80
+-58 -80 -30 -95
+-30 -95 0 -99
+0 -99 30 -95
+30 -95 58 -80
+58 -80 80 -58
+80 -58 95 -30
+95 -30 100 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_036.txt b/src/boost/libs/polygon/example/input_data/primary/primary_036.txt
new file mode 100644
index 00000000..c73b72cd
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_036.txt
@@ -0,0 +1,102 @@
+0
+100
+100 0 99 6
+99 6 99 12
+99 12 98 18
+98 18 96 24
+96 24 95 30
+95 30 92 36
+92 36 90 42
+90 42 87 48
+87 48 84 53
+84 53 80 58
+80 58 77 63
+77 63 72 68
+72 68 68 72
+68 72 63 77
+63 77 58 80
+58 80 53 84
+53 84 48 87
+48 87 42 90
+42 90 36 92
+36 92 30 95
+30 95 24 96
+24 96 18 98
+18 98 12 99
+12 99 6 99
+6 99 0 99
+0 99 -6 99
+-6 99 -12 99
+-12 99 -18 98
+-18 98 -24 96
+-24 96 -30 95
+-30 95 -36 92
+-36 92 -42 90
+-42 90 -48 87
+-48 87 -53 84
+-53 84 -58 80
+-58 80 -63 77
+-63 77 -68 72
+-68 72 -72 68
+-72 68 -77 63
+-77 63 -80 58
+-80 58 -84 53
+-84 53 -87 48
+-87 48 -90 42
+-90 42 -92 36
+-92 36 -95 30
+-95 30 -96 24
+-96 24 -98 18
+-98 18 -99 12
+-99 12 -99 6
+-99 6 -99 0
+-99 0 -99 -6
+-99 -6 -99 -12
+-99 -12 -98 -18
+-98 -18 -96 -24
+-96 -24 -95 -30
+-95 -30 -92 -36
+-92 -36 -90 -42
+-90 -42 -87 -48
+-87 -48 -84 -53
+-84 -53 -80 -58
+-80 -58 -77 -63
+-77 -63 -72 -68
+-72 -68 -68 -72
+-68 -72 -63 -77
+-63 -77 -58 -80
+-58 -80 -53 -84
+-53 -84 -48 -87
+-48 -87 -42 -90
+-42 -90 -36 -92
+-36 -92 -30 -95
+-30 -95 -24 -96
+-24 -96 -18 -98
+-18 -98 -12 -99
+-12 -99 -6 -99
+-6 -99 0 -99
+0 -99 6 -99
+6 -99 12 -99
+12 -99 18 -98
+18 -98 24 -96
+24 -96 30 -95
+30 -95 36 -92
+36 -92 42 -90
+42 -90 48 -87
+48 -87 53 -84
+53 -84 58 -80
+58 -80 63 -77
+63 -77 68 -72
+68 -72 72 -68
+72 -68 77 -63
+77 -63 80 -58
+80 -58 84 -53
+84 -53 87 -48
+87 -48 90 -42
+90 -42 92 -36
+92 -36 95 -30
+95 -30 96 -24
+96 -24 98 -18
+98 -18 99 -12
+99 -12 99 -6
+99 -6 100 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_037.txt b/src/boost/libs/polygon/example/input_data/primary/primary_037.txt
new file mode 100644
index 00000000..552fee8e
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_037.txt
@@ -0,0 +1,102 @@
+80
+99 6
+99 12
+98 18
+96 24
+92 36
+90 42
+87 48
+84 53
+77 63
+72 68
+68 72
+63 77
+53 84
+48 87
+42 90
+36 92
+24 96
+18 98
+12 99
+6 99
+-6 99
+-12 99
+-18 98
+-24 96
+-36 92
+-42 90
+-48 87
+-53 84
+-63 77
+-68 72
+-72 68
+-77 63
+-84 53
+-87 48
+-90 42
+-92 36
+-96 24
+-98 18
+-99 12
+-99 6
+-99 -6
+-99 -12
+-98 -18
+-96 -24
+-92 -36
+-90 -42
+-87 -48
+-84 -53
+-77 -63
+-72 -68
+-68 -72
+-63 -77
+-53 -84
+-48 -87
+-42 -90
+-36 -92
+-24 -96
+-18 -98
+-12 -99
+-6 -99
+6 -99
+12 -99
+18 -98
+24 -96
+36 -92
+42 -90
+48 -87
+53 -84
+63 -77
+68 -72
+72 -68
+77 -63
+84 -53
+87 -48
+90 -42
+92 -36
+96 -24
+98 -18
+99 -12
+99 -6
+20
+100 0 99 6
+95 30 92 36
+80 58 77 63
+58 80 53 84
+30 95 24 96
+0 99 -6 99
+-30 95 -36 92
+-58 80 -63 77
+-80 58 -84 53
+-95 30 -96 24
+-99 0 -99 -6
+-95 -30 -92 -36
+-80 -58 -77 -63
+-58 -80 -53 -84
+-30 -95 -24 -96
+0 -99 6 -99
+30 -95 36 -92
+58 -80 63 -77
+80 -58 84 -53
+95 -30 96 -24 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_038.txt b/src/boost/libs/polygon/example/input_data/primary/primary_038.txt
new file mode 100644
index 00000000..66a50f70
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_038.txt
@@ -0,0 +1,222 @@
+0
+220
+0 0 0 10
+0 0 10 0
+0 10 0 20
+0 10 10 10
+0 20 0 30
+0 20 10 20
+0 30 0 40
+0 30 10 30
+0 40 0 50
+0 40 10 40
+0 50 0 60
+0 50 10 50
+0 60 0 70
+0 60 10 60
+0 70 0 80
+0 70 10 70
+0 80 0 90
+0 80 10 80
+0 90 0 100
+0 90 10 90
+0 100 10 100
+10 0 10 10
+10 0 20 0
+10 10 10 20
+10 10 20 10
+10 20 10 30
+10 20 20 20
+10 30 10 40
+10 30 20 30
+10 40 10 50
+10 40 20 40
+10 50 10 60
+10 50 20 50
+10 60 10 70
+10 60 20 60
+10 70 10 80
+10 70 20 70
+10 80 10 90
+10 80 20 80
+10 90 10 100
+10 90 20 90
+10 100 20 100
+20 0 20 10
+20 0 30 0
+20 10 20 20
+20 10 30 10
+20 20 20 30
+20 20 30 20
+20 30 20 40
+20 30 30 30
+20 40 20 50
+20 40 30 40
+20 50 20 60
+20 50 30 50
+20 60 20 70
+20 60 30 60
+20 70 20 80
+20 70 30 70
+20 80 20 90
+20 80 30 80
+20 90 20 100
+20 90 30 90
+20 100 30 100
+30 0 30 10
+30 0 40 0
+30 10 30 20
+30 10 40 10
+30 20 30 30
+30 20 40 20
+30 30 30 40
+30 30 40 30
+30 40 30 50
+30 40 40 40
+30 50 30 60
+30 50 40 50
+30 60 30 70
+30 60 40 60
+30 70 30 80
+30 70 40 70
+30 80 30 90
+30 80 40 80
+30 90 30 100
+30 90 40 90
+30 100 40 100
+40 0 40 10
+40 0 50 0
+40 10 40 20
+40 10 50 10
+40 20 40 30
+40 20 50 20
+40 30 40 40
+40 30 50 30
+40 40 40 50
+40 40 50 40
+40 50 40 60
+40 50 50 50
+40 60 40 70
+40 60 50 60
+40 70 40 80
+40 70 50 70
+40 80 40 90
+40 80 50 80
+40 90 40 100
+40 90 50 90
+40 100 50 100
+50 0 50 10
+50 0 60 0
+50 10 50 20
+50 10 60 10
+50 20 50 30
+50 20 60 20
+50 30 50 40
+50 30 60 30
+50 40 50 50
+50 40 60 40
+50 50 50 60
+50 50 60 50
+50 60 50 70
+50 60 60 60
+50 70 50 80
+50 70 60 70
+50 80 50 90
+50 80 60 80
+50 90 50 100
+50 90 60 90
+50 100 60 100
+60 0 60 10
+60 0 70 0
+60 10 60 20
+60 10 70 10
+60 20 60 30
+60 20 70 20
+60 30 60 40
+60 30 70 30
+60 40 60 50
+60 40 70 40
+60 50 60 60
+60 50 70 50
+60 60 60 70
+60 60 70 60
+60 70 60 80
+60 70 70 70
+60 80 60 90
+60 80 70 80
+60 90 60 100
+60 90 70 90
+60 100 70 100
+70 0 70 10
+70 0 80 0
+70 10 70 20
+70 10 80 10
+70 20 70 30
+70 20 80 20
+70 30 70 40
+70 30 80 30
+70 40 70 50
+70 40 80 40
+70 50 70 60
+70 50 80 50
+70 60 70 70
+70 60 80 60
+70 70 70 80
+70 70 80 70
+70 80 70 90
+70 80 80 80
+70 90 70 100
+70 90 80 90
+70 100 80 100
+80 0 80 10
+80 0 90 0
+80 10 80 20
+80 10 90 10
+80 20 80 30
+80 20 90 20
+80 30 80 40
+80 30 90 30
+80 40 80 50
+80 40 90 40
+80 50 80 60
+80 50 90 50
+80 60 80 70
+80 60 90 60
+80 70 80 80
+80 70 90 70
+80 80 80 90
+80 80 90 80
+80 90 80 100
+80 90 90 90
+80 100 90 100
+90 0 90 10
+90 0 100 0
+90 10 90 20
+90 10 100 10
+90 20 90 30
+90 20 100 20
+90 30 90 40
+90 30 100 30
+90 40 90 50
+90 40 100 40
+90 50 90 60
+90 50 100 50
+90 60 90 70
+90 60 100 60
+90 70 90 80
+90 70 100 70
+90 80 90 90
+90 80 100 80
+90 90 90 100
+90 90 100 90
+90 100 100 100
+100 0 100 10
+100 10 100 20
+100 20 100 30
+100 30 100 40
+100 40 100 50
+100 50 100 60
+100 60 100 70
+100 70 100 80
+100 80 100 90
+100 90 100 100 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_039.txt b/src/boost/libs/polygon/example/input_data/primary/primary_039.txt
new file mode 100644
index 00000000..ed187312
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_039.txt
@@ -0,0 +1,322 @@
+100
+5 5
+5 15
+5 25
+5 35
+5 45
+5 55
+5 65
+5 75
+5 85
+5 95
+15 5
+15 15
+15 25
+15 35
+15 45
+15 55
+15 65
+15 75
+15 85
+15 95
+25 5
+25 15
+25 25
+25 35
+25 45
+25 55
+25 65
+25 75
+25 85
+25 95
+35 5
+35 15
+35 25
+35 35
+35 45
+35 55
+35 65
+35 75
+35 85
+35 95
+45 5
+45 15
+45 25
+45 35
+45 45
+45 55
+45 65
+45 75
+45 85
+45 95
+55 5
+55 15
+55 25
+55 35
+55 45
+55 55
+55 65
+55 75
+55 85
+55 95
+65 5
+65 15
+65 25
+65 35
+65 45
+65 55
+65 65
+65 75
+65 85
+65 95
+75 5
+75 15
+75 25
+75 35
+75 45
+75 55
+75 65
+75 75
+75 85
+75 95
+85 5
+85 15
+85 25
+85 35
+85 45
+85 55
+85 65
+85 75
+85 85
+85 95
+95 5
+95 15
+95 25
+95 35
+95 45
+95 55
+95 65
+95 75
+95 85
+95 95
+220
+0 0 0 10
+0 0 10 0
+0 10 0 20
+0 10 10 10
+0 20 0 30
+0 20 10 20
+0 30 0 40
+0 30 10 30
+0 40 0 50
+0 40 10 40
+0 50 0 60
+0 50 10 50
+0 60 0 70
+0 60 10 60
+0 70 0 80
+0 70 10 70
+0 80 0 90
+0 80 10 80
+0 90 0 100
+0 90 10 90
+0 100 10 100
+10 0 10 10
+10 0 20 0
+10 10 10 20
+10 10 20 10
+10 20 10 30
+10 20 20 20
+10 30 10 40
+10 30 20 30
+10 40 10 50
+10 40 20 40
+10 50 10 60
+10 50 20 50
+10 60 10 70
+10 60 20 60
+10 70 10 80
+10 70 20 70
+10 80 10 90
+10 80 20 80
+10 90 10 100
+10 90 20 90
+10 100 20 100
+20 0 20 10
+20 0 30 0
+20 10 20 20
+20 10 30 10
+20 20 20 30
+20 20 30 20
+20 30 20 40
+20 30 30 30
+20 40 20 50
+20 40 30 40
+20 50 20 60
+20 50 30 50
+20 60 20 70
+20 60 30 60
+20 70 20 80
+20 70 30 70
+20 80 20 90
+20 80 30 80
+20 90 20 100
+20 90 30 90
+20 100 30 100
+30 0 30 10
+30 0 40 0
+30 10 30 20
+30 10 40 10
+30 20 30 30
+30 20 40 20
+30 30 30 40
+30 30 40 30
+30 40 30 50
+30 40 40 40
+30 50 30 60
+30 50 40 50
+30 60 30 70
+30 60 40 60
+30 70 30 80
+30 70 40 70
+30 80 30 90
+30 80 40 80
+30 90 30 100
+30 90 40 90
+30 100 40 100
+40 0 40 10
+40 0 50 0
+40 10 40 20
+40 10 50 10
+40 20 40 30
+40 20 50 20
+40 30 40 40
+40 30 50 30
+40 40 40 50
+40 40 50 40
+40 50 40 60
+40 50 50 50
+40 60 40 70
+40 60 50 60
+40 70 40 80
+40 70 50 70
+40 80 40 90
+40 80 50 80
+40 90 40 100
+40 90 50 90
+40 100 50 100
+50 0 50 10
+50 0 60 0
+50 10 50 20
+50 10 60 10
+50 20 50 30
+50 20 60 20
+50 30 50 40
+50 30 60 30
+50 40 50 50
+50 40 60 40
+50 50 50 60
+50 50 60 50
+50 60 50 70
+50 60 60 60
+50 70 50 80
+50 70 60 70
+50 80 50 90
+50 80 60 80
+50 90 50 100
+50 90 60 90
+50 100 60 100
+60 0 60 10
+60 0 70 0
+60 10 60 20
+60 10 70 10
+60 20 60 30
+60 20 70 20
+60 30 60 40
+60 30 70 30
+60 40 60 50
+60 40 70 40
+60 50 60 60
+60 50 70 50
+60 60 60 70
+60 60 70 60
+60 70 60 80
+60 70 70 70
+60 80 60 90
+60 80 70 80
+60 90 60 100
+60 90 70 90
+60 100 70 100
+70 0 70 10
+70 0 80 0
+70 10 70 20
+70 10 80 10
+70 20 70 30
+70 20 80 20
+70 30 70 40
+70 30 80 30
+70 40 70 50
+70 40 80 40
+70 50 70 60
+70 50 80 50
+70 60 70 70
+70 60 80 60
+70 70 70 80
+70 70 80 70
+70 80 70 90
+70 80 80 80
+70 90 70 100
+70 90 80 90
+70 100 80 100
+80 0 80 10
+80 0 90 0
+80 10 80 20
+80 10 90 10
+80 20 80 30
+80 20 90 20
+80 30 80 40
+80 30 90 30
+80 40 80 50
+80 40 90 40
+80 50 80 60
+80 50 90 50
+80 60 80 70
+80 60 90 60
+80 70 80 80
+80 70 90 70
+80 80 80 90
+80 80 90 80
+80 90 80 100
+80 90 90 90
+80 100 90 100
+90 0 90 10
+90 0 100 0
+90 10 90 20
+90 10 100 10
+90 20 90 30
+90 20 100 20
+90 30 90 40
+90 30 100 30
+90 40 90 50
+90 40 100 40
+90 50 90 60
+90 50 100 50
+90 60 90 70
+90 60 100 60
+90 70 90 80
+90 70 100 70
+90 80 90 90
+90 80 100 80
+90 90 90 100
+90 90 100 90
+90 100 100 100
+100 0 100 10
+100 10 100 20
+100 20 100 30
+100 30 100 40
+100 40 100 50
+100 50 100 60
+100 60 100 70
+100 70 100 80
+100 80 100 90
+100 90 100 100 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_040.txt b/src/boost/libs/polygon/example/input_data/primary/primary_040.txt
new file mode 100644
index 00000000..bf55be4f
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_040.txt
@@ -0,0 +1,11 @@
+10
+858993458 1717986916
+-429496729 1288490187
+-2147483645 -1288490187
+-2147483645 -858993458
+-1717986916 858993458
+-2147483645 -429496729
+429496729 -2147483645
+858993458 -429496729
+-429496729 1717986916
+1717986916 -858993458 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_041.txt b/src/boost/libs/polygon/example/input_data/primary/primary_041.txt
new file mode 100644
index 00000000..76ef90de
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_041.txt
@@ -0,0 +1,8 @@
+0
+6
+0 0 0 10
+-5 0 -1 0
+-6 2 -1 2
+-4 5 -2 5
+-8 8 -1 8
+-7 -2 -7 7 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_042.txt b/src/boost/libs/polygon/example/input_data/primary/primary_042.txt
new file mode 100644
index 00000000..57d7726d
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_042.txt
@@ -0,0 +1,5 @@
+0
+3
+-6 -1 -5 3
+-1 0 4 -1
+3 0 4 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_043.txt b/src/boost/libs/polygon/example/input_data/primary/primary_043.txt
new file mode 100644
index 00000000..ccddfcb6
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_043.txt
@@ -0,0 +1,5 @@
+0
+3
+-5 -2 -4 2
+-5 3 -2 2
+-5 5 -2 2 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_044.txt b/src/boost/libs/polygon/example/input_data/primary/primary_044.txt
new file mode 100644
index 00000000..b4cf7e03
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_044.txt
@@ -0,0 +1,5 @@
+0
+3
+-9 -8 -4 -3
+-8 -3 -4 -3
+-2 7 -1 3 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_045.txt b/src/boost/libs/polygon/example/input_data/primary/primary_045.txt
new file mode 100644
index 00000000..74c4d69f
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_045.txt
@@ -0,0 +1,5 @@
+0
+3
+14 76 38 29
+37 47 61 50
+39 37 41 35
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_046.txt b/src/boost/libs/polygon/example/input_data/primary/primary_046.txt
new file mode 100644
index 00000000..5ff83ebc
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_046.txt
@@ -0,0 +1,5 @@
+2
+2 -5
+3 -3
+1
+0 0 2 -7 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_047.txt b/src/boost/libs/polygon/example/input_data/primary/primary_047.txt
new file mode 100644
index 00000000..bd8f67cf
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_047.txt
@@ -0,0 +1,5 @@
+1
+-35 -49
+2
+-48 -29 -46 -78
+-46 -46 -45 -42 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_048.txt b/src/boost/libs/polygon/example/input_data/primary/primary_048.txt
new file mode 100644
index 00000000..d93dfb4c
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_048.txt
@@ -0,0 +1,11 @@
+0
+9
+-50 -29 -49 -73
+-48 -29 -46 -78
+-46 -46 -45 -42
+-35 -49 -34 -49
+-30 -2 -29 3
+-43 16 -40 6
+-36 38 -34 49
+-35 39 -31 37
+-28 34 -27 -9 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_049.txt b/src/boost/libs/polygon/example/input_data/primary/primary_049.txt
new file mode 100644
index 00000000..a8b85366
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_049.txt
@@ -0,0 +1,11 @@
+0
+9
+-5 4 -7 8
+-5 4 -5 2
+-5 4 -2 7
+-1 -6 -5 -2
+-1 -6 -3 -10
+-1 -6 5 -6
+5 -1 5 -4
+5 -1 3 4
+5 -1 8 6 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_050.txt b/src/boost/libs/polygon/example/input_data/primary/primary_050.txt
new file mode 100644
index 00000000..7de80dee
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_050.txt
@@ -0,0 +1,5 @@
+0 4
+2134582590 2134582590 2134582590 2141031480
+2134582590 2134582590 2141031480 2134582590
+2141031480 2134582590 2141031480 2141031480
+2134582590 2141031480 2141031480 2141031480 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_051.txt b/src/boost/libs/polygon/example/input_data/primary/primary_051.txt
new file mode 100644
index 00000000..61eb7d56
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_051.txt
@@ -0,0 +1,5 @@
+0 4
+-1073741800 -1073741800 -687194752 -1159641144
+-1073741800 -1073741800 -408021884 -923417948
+-1073741800 -1073741800 -343597376 -2061584256
+-2147483600 -837518604 -1073741800 -1073741800 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_052.txt b/src/boost/libs/polygon/example/input_data/primary/primary_052.txt
new file mode 100644
index 00000000..877def64
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_052.txt
@@ -0,0 +1,5 @@
+0
+3
+0 0 0 -1
+0 0 1 1
+0 0 1 -1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_053.txt b/src/boost/libs/polygon/example/input_data/primary/primary_053.txt
new file mode 100644
index 00000000..8beb1d51
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_053.txt
@@ -0,0 +1,5 @@
+2
+1 0
+0 10
+1
+-2 10 -1 0 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_054.txt b/src/boost/libs/polygon/example/input_data/primary/primary_054.txt
new file mode 100644
index 00000000..4ef0f59a
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_054.txt
@@ -0,0 +1,4 @@
+0 3
+-1073741800 -1073741800 -687194752 -1159641144
+-1073741800 -1073741800 -408021884 -923417948
+-1073741800 -1073741800 -343597376 -2061584256 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_055.txt b/src/boost/libs/polygon/example/input_data/primary/primary_055.txt
new file mode 100644
index 00000000..9f01d2fb
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_055.txt
@@ -0,0 +1,5 @@
+0
+3
+-3 -4 -1 -2
+-2 4 4 -1
+0 -2 0 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_056.txt b/src/boost/libs/polygon/example/input_data/primary/primary_056.txt
new file mode 100644
index 00000000..886f56df
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_056.txt
@@ -0,0 +1,5 @@
+1
+9 72
+2
+-2 0 -1 -50
+-1 -50 0 -99 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_057.txt b/src/boost/libs/polygon/example/input_data/primary/primary_057.txt
new file mode 100644
index 00000000..75aa2abc
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_057.txt
@@ -0,0 +1,6 @@
+5
+-4 -4
+-6 0
+-2 2
+0 4
+-10 2 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_058.txt b/src/boost/libs/polygon/example/input_data/primary/primary_058.txt
new file mode 100644
index 00000000..6b4eda52
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_058.txt
@@ -0,0 +1,9 @@
+0 8
+644245092 214748364 858993456 214748364
+-644245092 -214748364 0 644245092
+-858993456 -214748364 -429496728 -644245092
+0 644245092 -214748364 644245092
+644245092 644245092 0 644245092
+858993456 858993456 644245092 644245092
+644245092 214748364 644245092 644245092
+858993456 214748364 644245092 214748364
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_059.txt b/src/boost/libs/polygon/example/input_data/primary/primary_059.txt
new file mode 100644
index 00000000..df514ff5
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_059.txt
@@ -0,0 +1,12 @@
+0 11
+214748364 -214748364 1073741820 -1073741820
+-858993456 -214748364 -858993456 0
+-214748364 -644245092 -858993456 -214748364
+0 -644245092 -214748364 -644245092
+214748364 -644245092 0 -644245092
+-858993456 0 -858993456 -214748364
+-644245092 214748364 -858993456 0
+-214748364 214748364 -214748364 0
+-214748364 0 429496728 0
+-214748364 0 -214748364 -644245092
+-214748364 -644245092 0 -644245092
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_060.txt b/src/boost/libs/polygon/example/input_data/primary/primary_060.txt
new file mode 100644
index 00000000..08389494
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_060.txt
@@ -0,0 +1,12 @@
+0 11
+1 -1 5 -5
+-4 -1 -4 0
+-1 -3 -4 -1
+0 -3 -1 -3
+1 -3 0 -3
+-4 0 -4 -1
+-3 1 -4 0
+-1 1 -1 0
+-1 0 2 0
+-1 0 -1 -3
+-1 -3 0 -3
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_061.txt b/src/boost/libs/polygon/example/input_data/primary/primary_061.txt
new file mode 100644
index 00000000..eda3d149
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_061.txt
@@ -0,0 +1,9 @@
+0 8
+-858993456 644245092 0 -429496728
+644245092 214748364 -214748364 214748364
+0 429496728 214748364 644245092
+214748364 644245092 429496728 644245092
+429496728 644245092 644245092 858993456
+-858993456 644245092 -429496728 214748364
+-429496728 644245092 214748364 644245092
+214748364 644245092 429496728 644245092
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_062.txt b/src/boost/libs/polygon/example/input_data/primary/primary_062.txt
new file mode 100644
index 00000000..5e30486b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_062.txt
@@ -0,0 +1,4 @@
+0 3
+644245092 214748364 -214748364 214748364
+0 429496728 214748364 644245092
+-429496728 644245092 214748364 644245092
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_063.txt b/src/boost/libs/polygon/example/input_data/primary/primary_063.txt
new file mode 100644
index 00000000..724c6d01
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_063.txt
@@ -0,0 +1,4 @@
+0
+2
+-5 0 -1 -1
+-4 0 -6 3
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_064.txt b/src/boost/libs/polygon/example/input_data/primary/primary_064.txt
new file mode 100644
index 00000000..29d933ab
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_064.txt
@@ -0,0 +1,4 @@
+0 3
+-8 15 24 28
+-37 4 -39 36
+12 -30 44 8
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_065.txt b/src/boost/libs/polygon/example/input_data/primary/primary_065.txt
new file mode 100644
index 00000000..1614082b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_065.txt
@@ -0,0 +1,89 @@
+0
+87
+-50061 -49176 -49997 -49195
+-50024 -49880 -49980 -49904
+-50001 -49559 -49983 -49632
+-49990 -49437 -49931 -49440
+-49971 -49300 -49894 -49240
+-49938 -49762 -49923 -49826
+-49938 -49133 -49864 -49064
+-49923 -49874 -49852 -49836
+-49897 -49640 -49866 -49683
+-49895 -49859 -49840 -49829
+-49889 -49210 -49828 -49159
+-49857 -49380 -49795 -49428
+-49841 -49551 -49836 -49502
+-49833 -49320 -49791 -49333
+-49828 -49707 -49779 -49627
+-49821 -49526 -49800 -49565
+-49817 -49714 -49729 -49752
+-49806 -49111 -49733 -49060
+-49796 -49803 -49787 -49787
+-49761 -49652 -49679 -49721
+-49756 -49266 -49727 -49249
+-49754 -49465 -49656 -49532
+-49740 -49146 -49706 -49152
+-49726 -49236 -49710 -49163
+-49717 -49215 -49617 -49303
+-49702 -49809 -49680 -49735
+-49702 -49370 -49678 -49415
+-49677 -49849 -49636 -49917
+-49641 -49057 -49560 -49083
+-49632 -49692 -49548 -49776
+-49627 -49640 -49627 -49572
+-49626 -49932 -49565 -49834
+-49605 -49426 -49547 -49466
+-49597 -49185 -49526 -49250
+-49542 -49652 -49454 -49751
+-49540 -49283 -49471 -49298
+-49537 -49845 -49500 -49927
+-49527 -49420 -49473 -49518
+-49519 -49092 -49483 -49162
+-49517 -49235 -49442 -49292
+-49511 -49972 -49504 -49938
+-49504 -49827 -49458 -49784
+-49494 -49323 -49485 -49413
+-49481 -49509 -49443 -49578
+-49461 -49606 -49427 -49598
+-49435 -49153 -49403 -49183
+-49419 -49762 -49376 -49792
+-49417 -49832 -49334 -49899
+-49408 -49887 -49398 -49973
+-49388 -49221 -49365 -49277
+-49381 -49444 -49374 -49522
+-49379 -49434 -49336 -49457
+-49373 -49220 -49367 -49171
+-49369 -49140 -49317 -49239
+-49367 -49538 -49291 -49562
+-49364 -49102 -49293 -49109
+-49346 -49652 -49332 -49605
+-49343 -49810 -49295 -49850
+-49337 -49198 -49292 -49238
+-49322 -49092 -49309 -49041
+-49317 -49349 -49315 -49396
+-49312 -49203 -49294 -49126
+-49297 -49988 -49256 -49977
+-49295 -49580 -49213 -49491
+-49291 -49641 -49278 -49656
+-49286 -49601 -49250 -49672
+-49283 -49914 -49281 -49847
+-49281 -49590 -49250 -49601
+-49273 -49379 -49232 -49312
+-49257 -49616 -49231 -49621
+-49245 -49884 -49202 -49841
+-49234 -49059 -49156 -49135
+-49225 -49336 -49164 -49360
+-49207 -49354 -49204 -49372
+-49188 -49136 -49160 -49168
+-49171 -49946 -49108 -49855
+-49169 -49415 -49101 -49453
+-49158 -49164 -49136 -49122
+-49130 -49925 -49097 -49841
+-49127 -49675 -49047 -49676
+-49109 -49435 -49011 -49528
+-49104 -49909 -49084 -49859
+-49082 -49602 -48992 -49566
+-49073 -49130 -49002 -49081
+-49064 -49936 -49025 -49978
+-49044 -49020 -49028 -49012
+-49010 -49234 -48949 -49210
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_066.txt b/src/boost/libs/polygon/example/input_data/primary/primary_066.txt
new file mode 100644
index 00000000..45f9dd36
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_066.txt
@@ -0,0 +1,195 @@
+0
+193
+-50004 -49132 -49976 -49143
+-50000 -49669 -49975 -49629
+-49998 -49048 -49946 -49035
+-49992 -49789 -49931 -49697
+-49987 -49783 -49900 -49859
+-49986 -49922 -49973 -49927
+-49986 -49478 -49972 -49515
+-49984 -49089 -49938 -49107
+-49983 -49675 -49963 -49734
+-49975 -49538 -49940 -49498
+-49971 -49867 -49918 -49886
+-49964 -49980 -49952 -50034
+-49952 -49566 -49904 -49592
+-49952 -49236 -49859 -49215
+-49945 -49509 -49921 -49460
+-49941 -49836 -49865 -49921
+-49940 -49321 -49932 -49403
+-49933 -49797 -49837 -49806
+-49929 -49381 -49858 -49388
+-49928 -49608 -49872 -49696
+-49927 -49805 -49902 -49825
+-49909 -49026 -49858 -48938
+-49898 -49229 -49851 -49251
+-49895 -49633 -49808 -49721
+-49886 -49687 -49837 -49759
+-49878 -49348 -49846 -49395
+-49875 -49084 -49837 -49109
+-49861 -49927 -49842 -49904
+-49857 -49151 -49830 -49181
+-49856 -49372 -49846 -49393
+-49855 -49515 -49784 -49607
+-49851 -49037 -49844 -49073
+-49845 -49220 -49790 -49301
+-49838 -49482 -49826 -49430
+-49836 -49490 -49770 -49397
+-49829 -49370 -49738 -49326
+-49805 -49616 -49781 -49647
+-49802 -49947 -49754 -49975
+-49802 -49824 -49782 -49751
+-49800 -49734 -49712 -49767
+-49795 -49462 -49730 -49430
+-49788 -49139 -49728 -49156
+-49786 -49538 -49747 -49514
+-49783 -49261 -49742 -49187
+-49775 -49133 -49752 -49051
+-49772 -49826 -49770 -49755
+-49770 -49737 -49715 -49701
+-49768 -49969 -49737 -49988
+-49768 -49289 -49708 -49270
+-49756 -49890 -49745 -49906
+-49732 -50045 -49659 -49957
+-49726 -49961 -49689 -49933
+-49725 -49584 -49701 -49520
+-49717 -49454 -49665 -49408
+-49713 -49620 -49696 -49597
+-49705 -49300 -49688 -49280
+-49702 -48946 -49619 -49011
+-49701 -49797 -49672 -49733
+-49699 -49730 -49640 -49673
+-49696 -49538 -49668 -49562
+-49695 -49454 -49644 -49509
+-49683 -49845 -49613 -49847
+-49676 -49455 -49614 -49455
+-49676 -49165 -49665 -49131
+-49669 -49436 -49618 -49397
+-49667 -49273 -49611 -49341
+-49664 -49941 -49644 -49853
+-49655 -49426 -49593 -49405
+-49650 -49039 -49592 -48996
+-49645 -49762 -49558 -49819
+-49642 -49918 -49629 -49925
+-49638 -49409 -49582 -49328
+-49636 -49743 -49559 -49805
+-49629 -49529 -49549 -49487
+-49627 -49096 -49577 -49054
+-49626 -49940 -49562 -50025
+-49612 -49466 -49574 -49398
+-49606 -49583 -49532 -49633
+-49606 -49288 -49556 -49356
+-49600 -49856 -49556 -49907
+-49594 -49166 -49546 -49148
+-49593 -49160 -49557 -49119
+-49586 -49533 -49534 -49534
+-49576 -49655 -49527 -49733
+-49571 -49468 -49564 -49410
+-49555 -49534 -49505 -49544
+-49555 -49314 -49503 -49289
+-49547 -49413 -49535 -49473
+-49543 -49984 -49462 -49886
+-49537 -49835 -49489 -49866
+-49536 -49256 -49515 -49237
+-49530 -49940 -49503 -49875
+-49510 -49342 -49485 -49366
+-49505 -49287 -49455 -49308
+-49499 -49909 -49475 -49880
+-49499 -49648 -49486 -49612
+-49489 -49785 -49482 -49851
+-49488 -49690 -49469 -49624
+-49484 -49727 -49441 -49650
+-49477 -49146 -49461 -49149
+-49474 -49433 -49401 -49411
+-49471 -49873 -49451 -49780
+-49471 -49725 -49415 -49775
+-49460 -49998 -49361 -49980
+-49458 -49621 -49448 -49561
+-49448 -49432 -49420 -49438
+-49443 -49942 -49353 -49975
+-49441 -49662 -49360 -49721
+-49439 -49313 -49375 -49361
+-49438 -49826 -49378 -49771
+-49437 -49884 -49427 -49849
+-49432 -49713 -49416 -49748
+-49423 -49035 -49363 -48938
+-49411 -49201 -49312 -49232
+-49410 -49095 -49399 -49034
+-49399 -49547 -49342 -49497
+-49399 -49230 -49390 -49259
+-49394 -49445 -49361 -49429
+-49393 -49615 -49360 -49660
+-49392 -49185 -49371 -49185
+-49392 -49020 -49390 -49005
+-49369 -49816 -49324 -49864
+-49368 -49828 -49342 -49845
+-49355 -50082 -49274 -49996
+-49354 -49414 -49270 -49512
+-49350 -49378 -49324 -49448
+-49349 -49027 -49317 -49012
+-49345 -49337 -49315 -49263
+-49344 -49983 -49278 -49977
+-49341 -49596 -49321 -49518
+-49338 -49054 -49329 -49121
+-49337 -49788 -49267 -49727
+-49333 -49258 -49320 -49275
+-49329 -49596 -49276 -49520
+-49325 -49228 -49232 -49257
+-49316 -49037 -49266 -49136
+-49313 -49612 -49267 -49604
+-49310 -49276 -49305 -49362
+-49306 -49704 -49294 -49652
+-49302 -49872 -49216 -49849
+-49286 -49089 -49225 -49139
+-49284 -49119 -49278 -49117
+-49276 -49306 -49209 -49406
+-49271 -49927 -49196 -49833
+-49264 -49696 -49176 -49674
+-49253 -49909 -49245 -49992
+-49252 -49804 -49161 -49822
+-49251 -49757 -49177 -49747
+-49249 -49603 -49150 -49595
+-49239 -49989 -49200 -49929
+-49239 -49202 -49205 -49178
+-49233 -49713 -49169 -49751
+-49225 -49327 -49210 -49359
+-49223 -49037 -49158 -48993
+-49219 -49243 -49181 -49336
+-49212 -49235 -49199 -49267
+-49211 -49912 -49138 -49959
+-49210 -49462 -49123 -49497
+-49206 -49814 -49151 -49905
+-49201 -49527 -49188 -49481
+-49190 -49120 -49173 -49206
+-49178 -49656 -49174 -49598
+-49172 -49616 -49110 -49600
+-49164 -49673 -49157 -49768
+-49161 -49414 -49096 -49406
+-49159 -49013 -49077 -49078
+-49154 -49000 -49086 -49047
+-49151 -49787 -49151 -49693
+-49143 -49651 -49123 -49683
+-49141 -49982 -49100 -49949
+-49138 -49607 -49117 -49583
+-49128 -49565 -49115 -49499
+-49123 -49412 -49040 -49426
+-49121 -49732 -49103 -49690
+-49117 -49724 -49102 -49688
+-49114 -49206 -49075 -49124
+-49110 -49937 -49030 -49889
+-49109 -49215 -49071 -49305
+-49092 -49527 -49056 -49604
+-49091 -49133 -49057 -49070
+-49089 -49036 -49022 -49076
+-49079 -49254 -49019 -49331
+-49077 -49768 -49042 -49804
+-49060 -49611 -49029 -49677
+-49060 -49083 -49052 -49170
+-49054 -49751 -49041 -49789
+-49047 -49846 -48991 -49882
+-49045 -49567 -48976 -49528
+-49043 -49787 -49000 -49864
+-49038 -49415 -49028 -49463
+-49033 -49721 -48973 -49756
+-49009 -49823 -48919 -49827
+-49008 -49022 -48959 -49051
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_067.txt b/src/boost/libs/polygon/example/input_data/primary/primary_067.txt
new file mode 100644
index 00000000..0278f75b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_067.txt
@@ -0,0 +1,193 @@
+0
+191
+-50042 -49987 -49958 -49945
+-50038 -49880 -49984 -49840
+-50037 -49252 -49945 -49166
+-50037 -49056 -49996 -49148
+-50032 -49217 -49997 -49201
+-50026 -49270 -49960 -49312
+-50015 -49525 -49981 -49615
+-49999 -49338 -49906 -49318
+-49987 -49179 -49967 -49165
+-49979 -49752 -49915 -49671
+-49969 -49530 -49933 -49592
+-49951 -49784 -49879 -49749
+-49951 -49221 -49901 -49194
+-49946 -49228 -49884 -49303
+-49945 -49017 -49892 -49044
+-49942 -49455 -49940 -49549
+-49935 -49727 -49867 -49646
+-49935 -49357 -49857 -49444
+-49929 -49561 -49868 -49576
+-49927 -49909 -49877 -49866
+-49917 -49237 -49913 -49230
+-49914 -49291 -49888 -49357
+-49911 -49876 -49902 -49845
+-49898 -49977 -49854 -49895
+-49898 -49495 -49817 -49490
+-49894 -50000 -49824 -50069
+-49893 -49680 -49865 -49692
+-49882 -49217 -49795 -49150
+-49873 -49323 -49831 -49278
+-49865 -49067 -49777 -49100
+-49859 -49115 -49822 -49170
+-49856 -49764 -49847 -49787
+-49855 -49475 -49796 -49446
+-49847 -49503 -49826 -49601
+-49847 -49227 -49774 -49288
+-49838 -49679 -49810 -49646
+-49821 -49704 -49807 -49760
+-49818 -49528 -49797 -49532
+-49812 -49585 -49753 -49537
+-49805 -49866 -49749 -49911
+-49803 -49243 -49742 -49282
+-49795 -49351 -49763 -49446
+-49790 -49322 -49768 -49409
+-49788 -49759 -49766 -49695
+-49780 -49048 -49765 -49147
+-49773 -49459 -49741 -49530
+-49764 -49068 -49746 -49104
+-49762 -49163 -49758 -49119
+-49760 -49208 -49715 -49126
+-49756 -49583 -49713 -49539
+-49754 -49728 -49690 -49715
+-49752 -49643 -49686 -49622
+-49748 -49983 -49653 -49989
+-49735 -49490 -49710 -49475
+-49733 -49426 -49649 -49404
+-49730 -49073 -49701 -49052
+-49727 -49005 -49681 -48996
+-49722 -49757 -49687 -49773
+-49702 -49179 -49668 -49222
+-49701 -49141 -49666 -49086
+-49698 -49353 -49683 -49290
+-49696 -49526 -49669 -49525
+-49692 -49988 -49637 -50061
+-49691 -49859 -49676 -49844
+-49690 -49445 -49637 -49414
+-49682 -49552 -49675 -49610
+-49679 -49853 -49671 -49918
+-49677 -49383 -49616 -49389
+-49673 -49827 -49666 -49784
+-49663 -49990 -49626 -50052
+-49661 -49742 -49639 -49842
+-49655 -49070 -49627 -48996
+-49650 -49495 -49585 -49491
+-49649 -49907 -49584 -49945
+-49645 -49253 -49640 -49189
+-49644 -49285 -49555 -49253
+-49643 -49740 -49592 -49686
+-49640 -49281 -49602 -49182
+-49630 -49389 -49536 -49479
+-49622 -49335 -49554 -49292
+-49619 -49538 -49606 -49522
+-49606 -49039 -49535 -49096
+-49602 -49383 -49599 -49328
+-49600 -49700 -49596 -49691
+-49599 -49612 -49531 -49514
+-49599 -49560 -49546 -49483
+-49592 -49206 -49563 -49198
+-49588 -49783 -49564 -49811
+-49575 -49789 -49486 -49772
+-49570 -49179 -49482 -49278
+-49557 -49225 -49506 -49269
+-49552 -49621 -49524 -49654
+-49540 -49058 -49532 -49085
+-49534 -49873 -49522 -49964
+-49532 -49626 -49502 -49607
+-49530 -49638 -49432 -49539
+-49527 -49420 -49478 -49505
+-49526 -49716 -49439 -49744
+-49508 -49372 -49498 -49454
+-49508 -49301 -49468 -49382
+-49507 -49275 -49459 -49371
+-49497 -49840 -49422 -49895
+-49494 -49252 -49451 -49251
+-49480 -49732 -49452 -49803
+-49472 -49036 -49460 -49129
+-49459 -49831 -49391 -49775
+-49456 -49427 -49390 -49409
+-49453 -49001 -49452 -48918
+-49441 -48971 -49380 -49025
+-49438 -49914 -49388 -49964
+-49430 -49525 -49342 -49457
+-49427 -49116 -49393 -49180
+-49424 -49378 -49339 -49293
+-49420 -49667 -49378 -49577
+-49419 -49208 -49392 -49286
+-49417 -49885 -49407 -49797
+-49417 -49327 -49345 -49285
+-49404 -49689 -49389 -49637
+-49399 -49430 -49320 -49375
+-49399 -49238 -49370 -49259
+-49394 -49946 -49367 -49866
+-49388 -49703 -49362 -49664
+-49385 -49785 -49311 -49789
+-49382 -49166 -49378 -49154
+-49375 -49211 -49344 -49286
+-49374 -49997 -49313 -50051
+-49367 -49941 -49348 -49969
+-49364 -49787 -49340 -49887
+-49359 -49232 -49315 -49203
+-49351 -49957 -49323 -49869
+-49349 -48969 -49303 -49026
+-49344 -49030 -49342 -49116
+-49333 -49248 -49326 -49316
+-49304 -49695 -49210 -49737
+-49301 -49643 -49244 -49656
+-49300 -49907 -49242 -49908
+-49295 -49272 -49231 -49194
+-49293 -49026 -49291 -48987
+-49290 -49992 -49244 -49950
+-49287 -49539 -49265 -49542
+-49278 -49142 -49261 -49117
+-49277 -49304 -49216 -49313
+-49272 -49800 -49251 -49769
+-49270 -49894 -49239 -49809
+-49269 -49397 -49196 -49319
+-49268 -49911 -49171 -49902
+-49257 -49050 -49208 -49086
+-49250 -49780 -49178 -49731
+-49239 -49113 -49166 -49120
+-49237 -49247 -49203 -49166
+-49230 -49019 -49194 -49061
+-49217 -49465 -49215 -49528
+-49213 -49605 -49116 -49548
+-49212 -49846 -49211 -49815
+-49209 -49912 -49171 -49955
+-49203 -49685 -49188 -49672
+-49203 -49234 -49147 -49333
+-49201 -49854 -49116 -49916
+-49200 -49087 -49190 -49045
+-49188 -49258 -49133 -49220
+-49179 -49615 -49150 -49581
+-49179 -49568 -49137 -49507
+-49168 -49326 -49114 -49385
+-49164 -50078 -49090 -49990
+-49164 -49498 -49157 -49409
+-49160 -49807 -49085 -49875
+-49158 -49601 -49136 -49624
+-49156 -49015 -49063 -49081
+-49155 -49894 -49135 -49907
+-49150 -49949 -49107 -49930
+-49150 -49143 -49147 -49210
+-49149 -49896 -49076 -49946
+-49147 -49219 -49094 -49155
+-49132 -49474 -49113 -49509
+-49129 -49400 -49052 -49347
+-49114 -49721 -49082 -49630
+-49113 -49663 -49106 -49585
+-49109 -49241 -49091 -49330
+-49107 -49230 -49067 -49179
+-49106 -49585 -49097 -49487
+-49104 -49006 -49077 -49043
+-49083 -49910 -49080 -49941
+-49069 -49028 -49010 -48971
+-49068 -49800 -49050 -49796
+-49045 -49223 -49029 -49273
+-49043 -49598 -48998 -49619
+-49037 -49738 -49031 -49678
+-49037 -49062 -49024 -49129
+-49033 -49407 -49023 -49483
+-49008 -49795 -48973 -49798
+-49003 -49428 -48993 -49376
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_068.txt b/src/boost/libs/polygon/example/input_data/primary/primary_068.txt
new file mode 100644
index 00000000..0684c815
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_068.txt
@@ -0,0 +1,98 @@
+0
+87
+-50021 -49808 -49940 -49833
+-50019 -49363 -49964 -49351
+-49963 -49703 -49912 -49721
+-49948 -49289 -49940 -49212
+-49916 -49137 -49870 -49141
+-49906 -49419 -49873 -49349
+-49903 -49328 -49899 -49307
+-49897 -49741 -49852 -49675
+-49895 -49638 -49828 -49568
+-49893 -49251 -49855 -49313
+-49871 -49502 -49801 -49551
+-49866 -49431 -49834 -49524
+-49861 -49122 -49812 -49030
+-49852 -49901 -49814 -49872
+-49815 -49601 -49716 -49652
+-49799 -49916 -49785 -49916
+-49766 -49501 -49745 -49523
+-49765 -49266 -49672 -49282
+-49763 -49207 -49681 -49170
+-49756 -49650 -49744 -49699
+-49748 -49703 -49663 -49657
+-49736 -49581 -49683 -49534
+-49736 -49463 -49700 -49534
+-49732 -49049 -49674 -49119
+-49722 -49992 -49694 -49963
+-49710 -49415 -49648 -49378
+-49710 -49298 -49670 -49339
+-49688 -49985 -49652 -50004
+-49684 -49416 -49634 -49459
+-49659 -49561 -49573 -49550
+-49654 -49211 -49613 -49161
+-49638 -49058 -49576 -49104
+-49624 -49012 -49543 -49051
+-49621 -49341 -49619 -49317
+-49608 -49406 -49593 -49379
+-49599 -49228 -49538 -49293
+-49598 -49634 -49527 -49534
+-49594 -49713 -49523 -49729
+-49586 -49735 -49580 -49724
+-49564 -49184 -49531 -49109
+-49560 -49651 -49528 -49579
+-49552 -49739 -49457 -49829
+-49549 -49938 -49543 -49953
+-49517 -49670 -49480 -49763
+-49508 -49076 -49493 -49008
+-49507 -49467 -49451 -49459
+-49478 -49308 -49439 -49383
+-49477 -48995 -49393 -49025
+-49468 -49237 -49401 -49183
+-49464 -49517 -49393 -49532
+-49453 -49670 -49395 -49751
+-49448 -49430 -49367 -49380
+-49434 -49371 -49403 -49302
+-49422 -49836 -49384 -49882
+-49408 -49095 -49396 -49110
+-49387 -49237 -49366 -49277
+-49368 -49766 -49365 -49777
+-49366 -49860 -49280 -49911
+-49359 -49526 -49355 -49554
+-49352 -49281 -49275 -49187
+-49346 -49424 -49327 -49370
+-49346 -48957 -49257 -49045
+-49344 -49529 -49311 -49595
+-49344 -49131 -49270 -49077
+-49331 -49505 -49276 -49470
+-49275 -49446 -49269 -49529
+-49274 -48994 -49239 -49083
+-49269 -49530 -49266 -49579
+-49268 -49916 -49229 -49923
+-49254 -49830 -49233 -49777
+-49214 -49820 -49168 -49806
+-49214 -49246 -49207 -49200
+-49209 -49470 -49159 -49503
+-49203 -49239 -49121 -49256
+-49186 -49302 -49156 -49306
+-49185 -49612 -49130 -49664
+-49158 -49718 -49100 -49653
+-49155 -49271 -49056 -49347
+-49138 -49437 -49061 -49374
+-49137 -49475 -49136 -49540
+-49126 -49059 -49069 -49056
+-49113 -49751 -49072 -49794
+-49102 -49977 -49024 -49998
+-49070 -49161 -49052 -49212
+-49053 -49902 -49030 -49948
+-49048 -49413 -49004 -49497
+-49021 -49751 -49015 -49668
+-49478.582149386399 -49780.216848801821
+-49394.596858638746 -49830.083115183246
+-49404.712650811380 -49872.695164891658
+-49392.218561523550 -49808.669479018703
+../../SOC_2010/sweepline/libs/sweepline/test/sweepline_test.cpp(703): error in "segment_random_test2<double>": check verify_output(test_output_small, NO_HALF_EDGE_INTERSECTIONS) == true failed [false != true]
+-49478.582149386399 -49780.216848801821
+-49394.596858638746 -49830.083115183246
+-49404.712650811380 -49872.695164891658
+-49392.218561523550 -49808.669479018703
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_069.txt b/src/boost/libs/polygon/example/input_data/primary/primary_069.txt
new file mode 100644
index 00000000..0fbf4bcb
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_069.txt
@@ -0,0 +1,83 @@
+0
+81
+-50026 -49688 -49978 -49701
+-49998 -49860 -49969 -49782
+-49974 -49744 -49897 -49748
+-49972 -49661 -49971 -49727
+-49971 -49845 -49902 -49789
+-49967 -49338 -49934 -49244
+-49947 -49670 -49896 -49744
+-49939 -49502 -49885 -49564
+-49937 -49150 -49874 -49115
+-49930 -49608 -49885 -49665
+-49925 -48976 -49888 -49019
+-49919 -49430 -49851 -49399
+-49909 -49052 -49908 -49015
+-49902 -49341 -49895 -49344
+-49899 -49717 -49827 -49792
+-49878 -49284 -49790 -49223
+-49844 -49250 -49784 -49171
+-49792 -49805 -49708 -49872
+-49781 -49381 -49727 -49379
+-49772 -49162 -49702 -49126
+-49768 -49290 -49696 -49324
+-49764 -49266 -49705 -49194
+-49737 -49279 -49659 -49200
+-49701 -49846 -49640 -49812
+-49699 -49415 -49670 -49409
+-49694 -49710 -49670 -49623
+-49688 -49732 -49653 -49759
+-49682 -49014 -49675 -49030
+-49679 -49421 -49641 -49428
+-49671 -49124 -49659 -49117
+-49642 -49113 -49599 -49063
+-49639 -49409 -49547 -49439
+-49629 -49070 -49595 -49043
+-49616 -49830 -49532 -49887
+-49616 -49438 -49544 -49519
+-49615 -49093 -49574 -49097
+-49610 -49583 -49587 -49491
+-49608 -49736 -49550 -49812
+-49599 -49403 -49520 -49408
+-49588 -49924 -49576 -49918
+-49579 -50064 -49483 -49994
+-49559 -49800 -49506 -49870
+-49552 -49543 -49534 -49570
+-49541 -49937 -49469 -49920
+-49513 -49782 -49494 -49816
+-49509 -49996 -49472 -49955
+-49509 -49892 -49452 -49796
+-49482 -50051 -49468 -49972
+-49419 -49411 -49371 -49424
+-49411 -49494 -49328 -49567
+-49407 -49584 -49358 -49547
+-49399 -49236 -49341 -49168
+-49370 -49205 -49284 -49121
+-49364 -49032 -49355 -49119
+-49363 -49029 -49302 -49048
+-49340 -49544 -49242 -49472
+-49335 -49800 -49325 -49866
+-49334 -49786 -49282 -49798
+-49323 -49685 -49229 -49765
+-49311 -49777 -49247 -49789
+-49305 -49633 -49283 -49631
+-49300 -49574 -49261 -49601
+-49295 -49245 -49286 -49278
+-49275 -49861 -49223 -49778
+-49261 -49054 -49235 -49029
+-49260 -49355 -49228 -49436
+-49248 -49991 -49198 -49926
+-49236 -49618 -49152 -49637
+-49225 -50042 -49179 -49961
+-49190 -49250 -49108 -49308
+-49189 -49609 -49168 -49578
+-49164 -49936 -49133 -49922
+-49124 -49640 -49057 -49695
+-49117 -49169 -49041 -49213
+-49111 -49802 -49099 -49894
+-49105 -49697 -49053 -49738
+-49082 -49532 -49031 -49559
+-49063 -49321 -49007 -49234
+-49032 -49130 -48987 -49200
+-49025 -49437 -48988 -49427
+-49008 -49119 -48968 -49214
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_070.txt b/src/boost/libs/polygon/example/input_data/primary/primary_070.txt
new file mode 100644
index 00000000..df3e8f92
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_070.txt
@@ -0,0 +1,5 @@
+1
+-49400 -49572
+2
+-49431 -49703 -49427 -49798
+-49427 -49798 -49423 -49892 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_071.txt b/src/boost/libs/polygon/example/input_data/primary/primary_071.txt
new file mode 100644
index 00000000..a09a125c
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_071.txt
@@ -0,0 +1,94 @@
+0
+90
+-50051 -49552 -49991 -49625
+-50042 -49515 -49976 -49442
+-50024 -49188 -49996 -49221
+-50007 -49191 -49933 -49159
+-50000 -49509 -49989 -49549
+-49991 -49047 -49950 -49120
+-49984 -49938 -49909 -49904
+-49959 -49631 -49908 -49568
+-49954 -49626 -49887 -49595
+-49949 -49320 -49859 -49414
+-49916 -49188 -49859 -49241
+-49906 -49611 -49830 -49675
+-49905 -49754 -49847 -49843
+-49892 -49327 -49848 -49239
+-49882 -49416 -49872 -49486
+-49871 -49640 -49797 -49703
+-49846 -49283 -49821 -49368
+-49767 -49927 -49707 -49928
+-49765 -49619 -49762 -49671
+-49764 -49476 -49721 -49531
+-49753 -49486 -49691 -49491
+-49738 -49590 -49712 -49679
+-49736 -49108 -49686 -49138
+-49736 -49008 -49671 -48932
+-49724 -49802 -49627 -49770
+-49717 -49691 -49694 -49699
+-49714 -49152 -49708 -49200
+-49707 -49875 -49621 -49790
+-49700 -49062 -49648 -49109
+-49684 -49680 -49611 -49740
+-49654 -49456 -49562 -49400
+-49611 -49270 -49584 -49339
+-49585 -49234 -49567 -49210
+-49578 -49012 -49527 -49080
+-49561 -49658 -49538 -49670
+-49536 -49144 -49445 -49082
+-49523 -49784 -49500 -49868
+-49509 -49742 -49424 -49733
+-49508 -49070 -49472 -49092
+-49490 -49176 -49439 -49082
+-49477 -49856 -49475 -49779
+-49467 -49051 -49446 -49014
+-49462 -49793 -49457 -49818
+-49460 -49642 -49381 -49620
+-49444 -49977 -49349 -50073
+-49444 -49973 -49396 -49915
+-49425 -49114 -49363 -49182
+-49424 -49002 -49351 -49096
+-49400 -49470 -49311 -49557
+-49392 -49631 -49324 -49704
+-49375 -49195 -49281 -49123
+-49361 -49096 -49314 -49143
+-49345 -49402 -49256 -49437
+-49339 -49476 -49298 -49437
+-49324 -49287 -49242 -49273
+-49290 -49579 -49252 -49548
+-49280 -49601 -49217 -49612
+-49268 -49108 -49169 -49112
+-49257 -49481 -49241 -49480
+-49248 -49521 -49233 -49580
+-49246 -49802 -49245 -49893
+-49236 -49292 -49205 -49336
+-49220 -49157 -49210 -49143
+-49209 -49367 -49171 -49405
+-49205 -49883 -49176 -49926
+-49204 -49128 -49131 -49099
+-49200 -49252 -49128 -49166
+-49194 -49507 -49189 -49496
+-49185 -49344 -49140 -49354
+-49183 -49895 -49144 -49867
+-49183 -49289 -49135 -49213
+-49177 -49192 -49168 -49158
+-49140 -49876 -49120 -49924
+-49140 -49855 -49116 -49874
+-49138 -49132 -49081 -49142
+-49127 -49293 -49090 -49363
+-49096 -49761 -49037 -49744
+-49096 -49101 -49081 -49093
+-49090 -49308 -49083 -49401
+-49086 -49605 -49074 -49539
+-49084 -49865 -49059 -49795
+-49084 -49124 -48989 -49171
+-49077 -49034 -49067 -49009
+-49069 -49979 -49067 -49965
+-49063 -49317 -49050 -49248
+-49036 -49851 -49002 -49942
+-49032 -49126 -49003 -49097
+-49025 -49181 -48951 -49179
+-49022 -49065 -48973 -49118
+-49018 -49876 -48988 -49875
+../../SOC_2010/sweepline/libs/sweepline/test/sweepline_test.cpp(723): error in "segment_random_test2<double>": check test_output_small.num_vertex_records() == test_output_large.num_vertex_records() failed [476 != 526]
+../../SOC_2010/sweepline/libs/sweepline/test/sweepline_test.cpp(725): error in "segment_random_test2<double>": check test_output_small.num_edge_records() == test_output_large.num_edge_records() failed [734 != 795]
diff --git a/src/boost/libs/polygon/example/input_data/primary/primary_072.txt b/src/boost/libs/polygon/example/input_data/primary/primary_072.txt
new file mode 100644
index 00000000..a43fcf3a
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/primary/primary_072.txt
@@ -0,0 +1,5 @@
+0
+3
+1403829871 74 1403829871 275
+1403829871 275 1403829741 275
+1403829741 275 1403829744 73 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_001.txt b/src/boost/libs/polygon/example/input_data/random/random_001.txt
new file mode 100644
index 00000000..04742bb0
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_001.txt
@@ -0,0 +1,11 @@
+10
+9 1
+4 3
+9 6
+9 8
+3 9
+6 8
+0 5
+9 5
+3 0
+2 1 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_002.txt b/src/boost/libs/polygon/example/input_data/random/random_002.txt
new file mode 100644
index 00000000..72905d18
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_002.txt
@@ -0,0 +1,11 @@
+10
+9 9
+2 6
+3 1
+6 4
+9 1
+9 7
+6 2
+2 4
+3 7
+6 7 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_003.txt b/src/boost/libs/polygon/example/input_data/random/random_003.txt
new file mode 100644
index 00000000..395e24d5
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_003.txt
@@ -0,0 +1,11 @@
+10
+4 1
+5 4
+5 5
+2 6
+3 4
+0 7
+2 5
+8 9
+0 4
+2 7 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_004.txt b/src/boost/libs/polygon/example/input_data/random/random_004.txt
new file mode 100644
index 00000000..b287e932
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_004.txt
@@ -0,0 +1,101 @@
+100
+29 76
+99 94
+74 20
+53 26
+95 55
+94 21
+50 70
+19 93
+31 30
+73 61
+87 23
+60 66
+51 29
+82 51
+74 40
+31 77
+1 82
+43 0
+58 67
+63 32
+19 90
+68 31
+49 63
+76 83
+72 20
+70 11
+80 23
+4 90
+32 56
+63 75
+51 71
+62 10
+80 57
+71 47
+2 8
+67 85
+64 72
+85 6
+53 91
+92 25
+95 79
+24 6
+1 10
+10 85
+11 30
+22 14
+48 55
+82 8
+14 54
+84 60
+33 91
+85 60
+65 81
+60 23
+10 44
+29 32
+21 11
+90 15
+73 71
+41 62
+9 36
+44 80
+27 39
+41 38
+25 23
+86 15
+4 76
+52 6
+39 97
+42 25
+93 93
+97 24
+13 16
+58 62
+48 78
+43 74
+99 85
+13 42
+8 82
+13 9
+51 50
+85 83
+30 11
+58 42
+44 32
+88 74
+37 21
+65 28
+79 94
+50 94
+38 83
+82 13
+30 88
+16 92
+73 66
+24 0
+40 82
+57 25
+55 88
+13 33 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_005.txt b/src/boost/libs/polygon/example/input_data/random/random_005.txt
new file mode 100644
index 00000000..427ee9cf
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_005.txt
@@ -0,0 +1,101 @@
+100
+-901943112 1116691472
+2104533928 1889785568
+1030792128 -1288490160
+128849016 -1030792128
+1932735240 214748360
+1889785568 -1245540488
+0 858993440
+-1331439832 1846835896
+-816043768 -858993440
+987842456 472446392
+1589137864 -1159641144
+429496720 687194752
+42949672 -901943112
+1374389504 42949672
+1030792128 -429496720
+-816043768 1159641144
+-2104533928 1374389504
+-300647704 -2147483600
+343597376 730144424
+558345736 -773094096
+-1331439832 1717986880
+773094096 -816043768
+-42949672 558345736
+1116691472 1417339176
+944892784 -1288490160
+858993440 -1675037208
+1288490160 -1159641144
+-1975684912 1717986880
+-773094096 257698032
+558345736 1073741800
+42949672 901943112
+515396064 -1717986880
+1288490160 300647704
+901943112 -128849016
+-2061584256 -1803886224
+730144424 1503238520
+601295408 944892784
+1503238520 -1889785568
+128849016 1760936552
+1803886224 -1073741800
+1932735240 1245540488
+-1116691472 -1889785568
+-2104533928 -1717986880
+-1717986880 1503238520
+-1675037208 -858993440
+-1202590816 -1546188192
+-85899344 214748360
+1374389504 -1803886224
+-1546188192 171798688
+1460288848 429496720
+-730144424 1760936552
+1503238520 429496720
+644245080 1331439832
+429496720 -1159641144
+-1717986880 -257698032
+-901943112 -773094096
+-1245540488 -1675037208
+1717986880 -1503238520
+987842456 901943112
+-386547048 515396064
+-1760936552 -601295408
+-257698032 1288490160
+-987842456 -472446392
+-386547048 -515396064
+-1073741800 -1159641144
+1546188192 -1503238520
+-1975684912 1116691472
+85899344 -1889785568
+-472446392 2018634584
+-343597376 -1073741800
+1846835896 1846835896
+2018634584 -1116691472
+-1589137864 -1460288848
+343597376 515396064
+-85899344 1202590816
+-300647704 1030792128
+2104533928 1503238520
+-1589137864 -343597376
+-1803886224 1374389504
+-1589137864 -1760936552
+42949672 0
+1503238520 1417339176
+-858993440 -1675037208
+343597376 -343597376
+-257698032 -773094096
+1632087536 1030792128
+-558345736 -1245540488
+644245080 -944892784
+1245540488 1889785568
+0 1889785568
+-515396064 1417339176
+1374389504 -1589137864
+-858993440 1632087536
+-1460288848 1803886224
+987842456 687194752
+-1116691472 -2147483600
+-429496720 1374389504
+300647704 -1073741800
+214748360 1632087536
+-1589137864 -730144424 \ No newline at end of file
diff --git a/src/boost/libs/polygon/example/input_data/random/random_006.txt b/src/boost/libs/polygon/example/input_data/random/random_006.txt
new file mode 100644
index 00000000..700f222b
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_006.txt
@@ -0,0 +1,6 @@
+0
+4
+-27 -32 5 -21
+-18 41 27 9
+-17 -25 12 9
+27 0 40 -20
diff --git a/src/boost/libs/polygon/example/input_data/random/random_007.txt b/src/boost/libs/polygon/example/input_data/random/random_007.txt
new file mode 100644
index 00000000..f4270e3e
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_007.txt
@@ -0,0 +1,6 @@
+0
+4
+-48 10 -17 19
+-35 -30 -33 -2
+13 -45 18 46
+31 -14 47 18
diff --git a/src/boost/libs/polygon/example/input_data/random/random_008.txt b/src/boost/libs/polygon/example/input_data/random/random_008.txt
new file mode 100644
index 00000000..5263a53f
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_008.txt
@@ -0,0 +1,6 @@
+0
+4
+-34 7 -21 13
+-9 37 39 10
+7 21 26 -18
+8 45 47 22
diff --git a/src/boost/libs/polygon/example/input_data/random/random_009.txt b/src/boost/libs/polygon/example/input_data/random/random_009.txt
new file mode 100644
index 00000000..b49d69d8
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_009.txt
@@ -0,0 +1,7 @@
+0
+5
+-21 -9 -9 -34
+-20 1 11 43
+-3 -1 21 18
+34 -18 40 15
+47 43 48 -7
diff --git a/src/boost/libs/polygon/example/input_data/random/random_010.txt b/src/boost/libs/polygon/example/input_data/random/random_010.txt
new file mode 100644
index 00000000..73e87f80
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_010.txt
@@ -0,0 +1,5 @@
+0
+3
+-39 -43 -6 -22
+13 -21 33 38
+24 -42 42 43
diff --git a/src/boost/libs/polygon/example/input_data/random/random_011.txt b/src/boost/libs/polygon/example/input_data/random/random_011.txt
new file mode 100644
index 00000000..178dfba3
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_011.txt
@@ -0,0 +1,7 @@
+0
+5
+-22 -18 -13 -26
+-16 -36 23 -28
+-12 -11 6 19
+-4 -3 44 -30
+15 -5 47 17
diff --git a/src/boost/libs/polygon/example/input_data/random/random_012.txt b/src/boost/libs/polygon/example/input_data/random/random_012.txt
new file mode 100644
index 00000000..c1959b73
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_012.txt
@@ -0,0 +1,6 @@
+0
+4
+-27 -24 -20 -45
+-15 29 28 20
+-12 -36 19 -21
+1 -21 3 -1
diff --git a/src/boost/libs/polygon/example/input_data/random/random_013.txt b/src/boost/libs/polygon/example/input_data/random/random_013.txt
new file mode 100644
index 00000000..e379eada
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_013.txt
@@ -0,0 +1,6 @@
+0
+4
+-47 11 -25 -20
+-17 2 3 -46
+-13 29 32 -35
+25 -3 42 37
diff --git a/src/boost/libs/polygon/example/input_data/random/random_014.txt b/src/boost/libs/polygon/example/input_data/random/random_014.txt
new file mode 100644
index 00000000..bb01d6d9
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_014.txt
@@ -0,0 +1,7 @@
+0
+5
+-36 -8 -18 24
+-17 44 -2 18
+-16 -7 -9 -28
+-14 5 -2 -20
+31 42 33 36
diff --git a/src/boost/libs/polygon/example/input_data/random/random_015.txt b/src/boost/libs/polygon/example/input_data/random/random_015.txt
new file mode 100644
index 00000000..0ae016b0
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_015.txt
@@ -0,0 +1,5 @@
+0
+3
+-24 17 -19 -12
+-21 -40 3 -17
+28 1 38 -38
diff --git a/src/boost/libs/polygon/example/input_data/random/random_016.txt b/src/boost/libs/polygon/example/input_data/random/random_016.txt
new file mode 100644
index 00000000..7c04741f
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_016.txt
@@ -0,0 +1,8 @@
+0
+6
+-44 -29 -36 -40
+-40 0 -5 -43
+-7 37 -3 -23
+-4 18 14 30
+6 39 38 32
+12 -20 27 -15
diff --git a/src/boost/libs/polygon/example/input_data/random/random_017.txt b/src/boost/libs/polygon/example/input_data/random/random_017.txt
new file mode 100644
index 00000000..267e5416
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_017.txt
@@ -0,0 +1,5 @@
+0
+3
+-46 -50 -36 -14
+-5 46 -4 -40
+21 45 49 -45
diff --git a/src/boost/libs/polygon/example/input_data/random/random_018.txt b/src/boost/libs/polygon/example/input_data/random/random_018.txt
new file mode 100644
index 00000000..980c7f61
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_018.txt
@@ -0,0 +1,7 @@
+0
+5
+-45 44 -36 -29
+-36 41 -32 -14
+-16 44 23 9
+13 -4 19 -29
+18 -3 48 39
diff --git a/src/boost/libs/polygon/example/input_data/random/random_019.txt b/src/boost/libs/polygon/example/input_data/random/random_019.txt
new file mode 100644
index 00000000..011dbaee
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_019.txt
@@ -0,0 +1,7 @@
+0
+5
+-29 22 -6 18
+-6 -20 18 19
+-5 28 44 22
+9 -48 22 -15
+11 32 11 39
diff --git a/src/boost/libs/polygon/example/input_data/random/random_020.txt b/src/boost/libs/polygon/example/input_data/random/random_020.txt
new file mode 100644
index 00000000..77b69472
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_020.txt
@@ -0,0 +1,7 @@
+0
+5
+-14 -43 37 -49
+-12 41 -10 -43
+-7 -20 18 -38
+7 34 47 -38
+23 26 42 -3
diff --git a/src/boost/libs/polygon/example/input_data/random/random_021.txt b/src/boost/libs/polygon/example/input_data/random/random_021.txt
new file mode 100644
index 00000000..f959ec61
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_021.txt
@@ -0,0 +1,7 @@
+0
+5
+-47 32 0 28
+-20 -22 9 -13
+-13 37 21 30
+-7 47 2 47
+26 47 32 1
diff --git a/src/boost/libs/polygon/example/input_data/random/random_022.txt b/src/boost/libs/polygon/example/input_data/random/random_022.txt
new file mode 100644
index 00000000..e8fa87c1
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_022.txt
@@ -0,0 +1,5 @@
+0
+3
+-19 17 -10 9
+-1 -50 25 40
+26 15 48 -3
diff --git a/src/boost/libs/polygon/example/input_data/random/random_023.txt b/src/boost/libs/polygon/example/input_data/random/random_023.txt
new file mode 100644
index 00000000..1d27d982
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_023.txt
@@ -0,0 +1,8 @@
+0
+6
+-41 -46 -20 -48
+-41 -22 10 -46
+-27 36 28 19
+-10 -10 28 -15
+13 -28 48 -19
+41 -20 47 1
diff --git a/src/boost/libs/polygon/example/input_data/random/random_024.txt b/src/boost/libs/polygon/example/input_data/random/random_024.txt
new file mode 100644
index 00000000..401f1259
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_024.txt
@@ -0,0 +1,7 @@
+0
+5
+-29 26 24 -46
+-24 -48 -15 -19
+-15 -20 -2 -23
+-9 -30 0 -42
+3 21 24 43
diff --git a/src/boost/libs/polygon/example/input_data/random/random_025.txt b/src/boost/libs/polygon/example/input_data/random/random_025.txt
new file mode 100644
index 00000000..4d3ca29d
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_025.txt
@@ -0,0 +1,4 @@
+0
+2
+-8 -34 29 22
+37 10 48 7
diff --git a/src/boost/libs/polygon/example/input_data/random/random_026.txt b/src/boost/libs/polygon/example/input_data/random/random_026.txt
new file mode 100644
index 00000000..c35bfd7c
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_026.txt
@@ -0,0 +1,6 @@
+0
+4
+-35 -28 19 26
+-21 16 -19 -4
+9 -34 27 3
+25 48 47 -31
diff --git a/src/boost/libs/polygon/example/input_data/random/random_027.txt b/src/boost/libs/polygon/example/input_data/random/random_027.txt
new file mode 100644
index 00000000..ce38d7a8
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_027.txt
@@ -0,0 +1,8 @@
+0
+6
+-45 46 -24 24
+-37 30 -36 -7
+-18 -47 -4 -14
+-3 -34 40 -33
+5 17 44 -26
+35 -16 45 9
diff --git a/src/boost/libs/polygon/example/input_data/random/random_028.txt b/src/boost/libs/polygon/example/input_data/random/random_028.txt
new file mode 100644
index 00000000..46952bd8
--- /dev/null
+++ b/src/boost/libs/polygon/example/input_data/random/random_028.txt
@@ -0,0 +1,7 @@
+0
+5
+-30 -27 -18 16
+-14 47 0 -46
+-13 42 13 20
+-10 26 7 -42
+-2 22 22 -42
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_001.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_001.png
new file mode 100644
index 00000000..abb16fac
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_001.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_002.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_002.png
new file mode 100644
index 00000000..3e707daf
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_002.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_003.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_003.png
new file mode 100644
index 00000000..de62fd7d
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_003.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_004.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_004.png
new file mode 100644
index 00000000..a89a4524
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_004.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_005.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_005.png
new file mode 100644
index 00000000..2b26dcc3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_005.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_006.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_006.png
new file mode 100644
index 00000000..2fbdcb73
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_006.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_007.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_007.png
new file mode 100644
index 00000000..74fcec91
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_007.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_008.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_008.png
new file mode 100644
index 00000000..17105a1f
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_008.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_009.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_009.png
new file mode 100644
index 00000000..b5423620
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_009.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_010.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_010.png
new file mode 100644
index 00000000..a1d1984e
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_010.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_011.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_011.png
new file mode 100644
index 00000000..3b689b46
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_011.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/polygon/polygon_012.png b/src/boost/libs/polygon/example/output_data/polygon/polygon_012.png
new file mode 100644
index 00000000..1e3f916d
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/polygon/polygon_012.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_001.png b/src/boost/libs/polygon/example/output_data/primary/primary_001.png
new file mode 100644
index 00000000..e84069fc
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_001.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_002.png b/src/boost/libs/polygon/example/output_data/primary/primary_002.png
new file mode 100644
index 00000000..384a35c3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_002.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_003.png b/src/boost/libs/polygon/example/output_data/primary/primary_003.png
new file mode 100644
index 00000000..66dc11ef
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_003.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_004.png b/src/boost/libs/polygon/example/output_data/primary/primary_004.png
new file mode 100644
index 00000000..7d134e28
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_004.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_005.png b/src/boost/libs/polygon/example/output_data/primary/primary_005.png
new file mode 100644
index 00000000..9715acbc
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_005.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_006.png b/src/boost/libs/polygon/example/output_data/primary/primary_006.png
new file mode 100644
index 00000000..585f29cd
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_006.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_007.png b/src/boost/libs/polygon/example/output_data/primary/primary_007.png
new file mode 100644
index 00000000..8d2b31b2
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_007.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_008.png b/src/boost/libs/polygon/example/output_data/primary/primary_008.png
new file mode 100644
index 00000000..99c27aa8
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_008.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_009.png b/src/boost/libs/polygon/example/output_data/primary/primary_009.png
new file mode 100644
index 00000000..4aff6d9d
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_009.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_010.png b/src/boost/libs/polygon/example/output_data/primary/primary_010.png
new file mode 100644
index 00000000..305bade5
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_010.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_011.png b/src/boost/libs/polygon/example/output_data/primary/primary_011.png
new file mode 100644
index 00000000..625ef724
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_011.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_012.png b/src/boost/libs/polygon/example/output_data/primary/primary_012.png
new file mode 100644
index 00000000..8bd48644
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_012.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_013.png b/src/boost/libs/polygon/example/output_data/primary/primary_013.png
new file mode 100644
index 00000000..f4586746
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_013.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_014.png b/src/boost/libs/polygon/example/output_data/primary/primary_014.png
new file mode 100644
index 00000000..7c281b7c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_014.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_015.png b/src/boost/libs/polygon/example/output_data/primary/primary_015.png
new file mode 100644
index 00000000..e3bf7266
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_015.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_016.png b/src/boost/libs/polygon/example/output_data/primary/primary_016.png
new file mode 100644
index 00000000..78b322e3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_016.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_017.png b/src/boost/libs/polygon/example/output_data/primary/primary_017.png
new file mode 100644
index 00000000..3c2618f8
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_017.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_018.png b/src/boost/libs/polygon/example/output_data/primary/primary_018.png
new file mode 100644
index 00000000..bfdbf2c7
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_018.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_019.png b/src/boost/libs/polygon/example/output_data/primary/primary_019.png
new file mode 100644
index 00000000..0a51631c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_019.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_020.png b/src/boost/libs/polygon/example/output_data/primary/primary_020.png
new file mode 100644
index 00000000..26c82e8c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_020.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_021.png b/src/boost/libs/polygon/example/output_data/primary/primary_021.png
new file mode 100644
index 00000000..abf18bba
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_021.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_022.png b/src/boost/libs/polygon/example/output_data/primary/primary_022.png
new file mode 100644
index 00000000..6408bf13
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_022.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_023.png b/src/boost/libs/polygon/example/output_data/primary/primary_023.png
new file mode 100644
index 00000000..a91f3a25
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_023.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_024.png b/src/boost/libs/polygon/example/output_data/primary/primary_024.png
new file mode 100644
index 00000000..d1643de0
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_024.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_025.png b/src/boost/libs/polygon/example/output_data/primary/primary_025.png
new file mode 100644
index 00000000..c45581a5
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_025.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_026.png b/src/boost/libs/polygon/example/output_data/primary/primary_026.png
new file mode 100644
index 00000000..6eb9c19e
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_026.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_027.png b/src/boost/libs/polygon/example/output_data/primary/primary_027.png
new file mode 100644
index 00000000..e113fd53
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_027.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_028.png b/src/boost/libs/polygon/example/output_data/primary/primary_028.png
new file mode 100644
index 00000000..ecc88a28
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_028.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_029.png b/src/boost/libs/polygon/example/output_data/primary/primary_029.png
new file mode 100644
index 00000000..46c9235a
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_029.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_030.png b/src/boost/libs/polygon/example/output_data/primary/primary_030.png
new file mode 100644
index 00000000..3ec5f6b0
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_030.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_031.png b/src/boost/libs/polygon/example/output_data/primary/primary_031.png
new file mode 100644
index 00000000..180e785b
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_031.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_032.png b/src/boost/libs/polygon/example/output_data/primary/primary_032.png
new file mode 100644
index 00000000..47077c19
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_032.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_033.png b/src/boost/libs/polygon/example/output_data/primary/primary_033.png
new file mode 100644
index 00000000..3fe9c2d1
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_033.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_034.png b/src/boost/libs/polygon/example/output_data/primary/primary_034.png
new file mode 100644
index 00000000..88c20830
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_034.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_035.png b/src/boost/libs/polygon/example/output_data/primary/primary_035.png
new file mode 100644
index 00000000..d747470a
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_035.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_036.png b/src/boost/libs/polygon/example/output_data/primary/primary_036.png
new file mode 100644
index 00000000..16d0dbc3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_036.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_037.png b/src/boost/libs/polygon/example/output_data/primary/primary_037.png
new file mode 100644
index 00000000..36dc9ddd
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_037.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_038.png b/src/boost/libs/polygon/example/output_data/primary/primary_038.png
new file mode 100644
index 00000000..22b2ada0
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_038.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_039.png b/src/boost/libs/polygon/example/output_data/primary/primary_039.png
new file mode 100644
index 00000000..c7721181
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_039.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_040.png b/src/boost/libs/polygon/example/output_data/primary/primary_040.png
new file mode 100644
index 00000000..6c22caa9
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_040.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_041.png b/src/boost/libs/polygon/example/output_data/primary/primary_041.png
new file mode 100644
index 00000000..3a516466
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_041.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_042.png b/src/boost/libs/polygon/example/output_data/primary/primary_042.png
new file mode 100644
index 00000000..3b6f63b0
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_042.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_043.png b/src/boost/libs/polygon/example/output_data/primary/primary_043.png
new file mode 100644
index 00000000..e0704cbd
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_043.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_044.png b/src/boost/libs/polygon/example/output_data/primary/primary_044.png
new file mode 100644
index 00000000..daec4264
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_044.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_045.png b/src/boost/libs/polygon/example/output_data/primary/primary_045.png
new file mode 100644
index 00000000..fccf0b70
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_045.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_046.png b/src/boost/libs/polygon/example/output_data/primary/primary_046.png
new file mode 100644
index 00000000..69ec8dce
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_046.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_047.png b/src/boost/libs/polygon/example/output_data/primary/primary_047.png
new file mode 100644
index 00000000..d1aca8b4
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_047.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_048.png b/src/boost/libs/polygon/example/output_data/primary/primary_048.png
new file mode 100644
index 00000000..49249c21
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_048.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_049.png b/src/boost/libs/polygon/example/output_data/primary/primary_049.png
new file mode 100644
index 00000000..b2be7179
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_049.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_050.png b/src/boost/libs/polygon/example/output_data/primary/primary_050.png
new file mode 100644
index 00000000..2668f055
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_050.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_051.png b/src/boost/libs/polygon/example/output_data/primary/primary_051.png
new file mode 100644
index 00000000..123bb0c3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_051.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_052.png b/src/boost/libs/polygon/example/output_data/primary/primary_052.png
new file mode 100644
index 00000000..64a24930
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_052.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_053.png b/src/boost/libs/polygon/example/output_data/primary/primary_053.png
new file mode 100644
index 00000000..10419980
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_053.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_054.png b/src/boost/libs/polygon/example/output_data/primary/primary_054.png
new file mode 100644
index 00000000..20012376
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_054.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_055.png b/src/boost/libs/polygon/example/output_data/primary/primary_055.png
new file mode 100644
index 00000000..eb26248d
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_055.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_056.png b/src/boost/libs/polygon/example/output_data/primary/primary_056.png
new file mode 100644
index 00000000..42e0a57b
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_056.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_057.png b/src/boost/libs/polygon/example/output_data/primary/primary_057.png
new file mode 100644
index 00000000..5bbadc81
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_057.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_058.png b/src/boost/libs/polygon/example/output_data/primary/primary_058.png
new file mode 100644
index 00000000..9d24c0d4
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_058.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_059.png b/src/boost/libs/polygon/example/output_data/primary/primary_059.png
new file mode 100644
index 00000000..d31ea60a
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_059.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_060.png b/src/boost/libs/polygon/example/output_data/primary/primary_060.png
new file mode 100644
index 00000000..d31ea60a
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_060.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_061.png b/src/boost/libs/polygon/example/output_data/primary/primary_061.png
new file mode 100644
index 00000000..1beab62e
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_061.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_062.png b/src/boost/libs/polygon/example/output_data/primary/primary_062.png
new file mode 100644
index 00000000..96f5cfb6
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_062.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_063.png b/src/boost/libs/polygon/example/output_data/primary/primary_063.png
new file mode 100644
index 00000000..b27ca1a0
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_063.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_064.png b/src/boost/libs/polygon/example/output_data/primary/primary_064.png
new file mode 100644
index 00000000..c393c425
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_064.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_065.png b/src/boost/libs/polygon/example/output_data/primary/primary_065.png
new file mode 100644
index 00000000..81b2b771
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_065.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_066.png b/src/boost/libs/polygon/example/output_data/primary/primary_066.png
new file mode 100644
index 00000000..797192d9
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_066.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_067.png b/src/boost/libs/polygon/example/output_data/primary/primary_067.png
new file mode 100644
index 00000000..ee770ea1
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_067.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_068.png b/src/boost/libs/polygon/example/output_data/primary/primary_068.png
new file mode 100644
index 00000000..54abfde3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_068.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_069.png b/src/boost/libs/polygon/example/output_data/primary/primary_069.png
new file mode 100644
index 00000000..b7b327de
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_069.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_070.png b/src/boost/libs/polygon/example/output_data/primary/primary_070.png
new file mode 100644
index 00000000..ecc86870
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_070.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_071.png b/src/boost/libs/polygon/example/output_data/primary/primary_071.png
new file mode 100644
index 00000000..af1a4b07
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_071.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/primary/primary_072.png b/src/boost/libs/polygon/example/output_data/primary/primary_072.png
new file mode 100644
index 00000000..89a06d31
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/primary/primary_072.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_001.png b/src/boost/libs/polygon/example/output_data/random/random_001.png
new file mode 100644
index 00000000..70bfd60c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_001.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_002.png b/src/boost/libs/polygon/example/output_data/random/random_002.png
new file mode 100644
index 00000000..a0c39abf
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_002.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_003.png b/src/boost/libs/polygon/example/output_data/random/random_003.png
new file mode 100644
index 00000000..180d6023
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_003.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_004.png b/src/boost/libs/polygon/example/output_data/random/random_004.png
new file mode 100644
index 00000000..1701b36c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_004.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_005.png b/src/boost/libs/polygon/example/output_data/random/random_005.png
new file mode 100644
index 00000000..1701b36c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_005.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_006.png b/src/boost/libs/polygon/example/output_data/random/random_006.png
new file mode 100644
index 00000000..350b3307
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_006.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_007.png b/src/boost/libs/polygon/example/output_data/random/random_007.png
new file mode 100644
index 00000000..f87c6305
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_007.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_008.png b/src/boost/libs/polygon/example/output_data/random/random_008.png
new file mode 100644
index 00000000..e03a4ea6
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_008.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_009.png b/src/boost/libs/polygon/example/output_data/random/random_009.png
new file mode 100644
index 00000000..9b165918
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_009.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_010.png b/src/boost/libs/polygon/example/output_data/random/random_010.png
new file mode 100644
index 00000000..f1fbd7b5
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_010.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_011.png b/src/boost/libs/polygon/example/output_data/random/random_011.png
new file mode 100644
index 00000000..3399269f
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_011.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_012.png b/src/boost/libs/polygon/example/output_data/random/random_012.png
new file mode 100644
index 00000000..ae4e39f2
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_012.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_013.png b/src/boost/libs/polygon/example/output_data/random/random_013.png
new file mode 100644
index 00000000..681af5e1
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_013.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_014.png b/src/boost/libs/polygon/example/output_data/random/random_014.png
new file mode 100644
index 00000000..fa460579
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_014.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_015.png b/src/boost/libs/polygon/example/output_data/random/random_015.png
new file mode 100644
index 00000000..c1053a4f
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_015.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_016.png b/src/boost/libs/polygon/example/output_data/random/random_016.png
new file mode 100644
index 00000000..fae18c3b
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_016.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_017.png b/src/boost/libs/polygon/example/output_data/random/random_017.png
new file mode 100644
index 00000000..5434bdd8
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_017.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_018.png b/src/boost/libs/polygon/example/output_data/random/random_018.png
new file mode 100644
index 00000000..7e5efd05
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_018.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_019.png b/src/boost/libs/polygon/example/output_data/random/random_019.png
new file mode 100644
index 00000000..63025d7a
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_019.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_020.png b/src/boost/libs/polygon/example/output_data/random/random_020.png
new file mode 100644
index 00000000..e17f4fb6
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_020.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_021.png b/src/boost/libs/polygon/example/output_data/random/random_021.png
new file mode 100644
index 00000000..82262699
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_021.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_022.png b/src/boost/libs/polygon/example/output_data/random/random_022.png
new file mode 100644
index 00000000..500134a3
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_022.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_023.png b/src/boost/libs/polygon/example/output_data/random/random_023.png
new file mode 100644
index 00000000..756e8d41
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_023.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_024.png b/src/boost/libs/polygon/example/output_data/random/random_024.png
new file mode 100644
index 00000000..0c973fca
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_024.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_025.png b/src/boost/libs/polygon/example/output_data/random/random_025.png
new file mode 100644
index 00000000..a7072581
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_025.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_026.png b/src/boost/libs/polygon/example/output_data/random/random_026.png
new file mode 100644
index 00000000..3f109f2c
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_026.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_027.png b/src/boost/libs/polygon/example/output_data/random/random_027.png
new file mode 100644
index 00000000..e4cd1001
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_027.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/output_data/random/random_028.png b/src/boost/libs/polygon/example/output_data/random/random_028.png
new file mode 100644
index 00000000..4b4bb721
--- /dev/null
+++ b/src/boost/libs/polygon/example/output_data/random/random_028.png
Binary files differ
diff --git a/src/boost/libs/polygon/example/voronoi_advanced_tutorial.cpp b/src/boost/libs/polygon/example/voronoi_advanced_tutorial.cpp
new file mode 100644
index 00000000..96ad9699
--- /dev/null
+++ b/src/boost/libs/polygon/example/voronoi_advanced_tutorial.cpp
@@ -0,0 +1,145 @@
+// Boost.Polygon library voronoi_advanced_tutorial.cpp file
+
+// Copyright Andrii Sydorchuk 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#include <cmath>
+#include <cstdio>
+#include <ctime>
+#include <string>
+
+// This will work properly only with GCC compiler.
+#include <ieee754.h>
+typedef long double fpt80;
+
+// Random generators and distributions.
+#include <boost/random/mersenne_twister.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
+#include <boost/timer/timer.hpp>
+
+#include <boost/polygon/voronoi.hpp>
+using namespace boost::polygon;
+
+struct my_ulp_comparison {
+ enum Result {
+ LESS = -1,
+ EQUAL = 0,
+ MORE = 1
+ };
+
+ Result operator()(fpt80 a, fpt80 b, unsigned int maxUlps) const {
+ if (a == b)
+ return EQUAL;
+ if (a > b) {
+ Result res = operator()(b, a, maxUlps);
+ if (res == EQUAL) return res;
+ return (res == LESS) ? MORE : LESS;
+ }
+ ieee854_long_double lhs, rhs;
+ lhs.d = a;
+ rhs.d = b;
+ if (lhs.ieee.negative ^ rhs.ieee.negative)
+ return lhs.ieee.negative ? LESS : MORE;
+ boost::uint64_t le = lhs.ieee.exponent; le =
+ (le << 32) + lhs.ieee.mantissa0;
+ boost::uint64_t re = rhs.ieee.exponent; re =
+ (re << 32) + rhs.ieee.mantissa0;
+ if (lhs.ieee.negative) {
+ if (le - 1 > re)
+ return LESS;
+ le = (le == re) ? 0 : 1;
+ le = (le << 32) + lhs.ieee.mantissa1;
+ re = rhs.ieee.mantissa1;
+ return (re + maxUlps < le) ? LESS : EQUAL;
+ } else {
+ if (le + 1 < re)
+ return LESS;
+ le = lhs.ieee.mantissa0;
+ re = (le == re) ? 0 : 1;
+ re = (re << 32) + rhs.ieee.mantissa1;
+ return (le + maxUlps < re) ? LESS : EQUAL;
+ }
+ }
+};
+
+struct my_fpt_converter {
+ template <typename T>
+ fpt80 operator()(const T& that) const {
+ return static_cast<fpt80>(that);
+ }
+
+ template <std::size_t N>
+ fpt80 operator()(const typename detail::extended_int<N> &that) const {
+ fpt80 result = 0.0;
+ for (std::size_t i = 1; i <= (std::min)((std::size_t)3, that.size()); ++i) {
+ if (i != 1)
+ result *= static_cast<fpt80>(0x100000000ULL);
+ result += that.chunks()[that.size() - i];
+ }
+ return (that.count() < 0) ? -result : result;
+ }
+};
+
+// Voronoi diagram traits.
+struct my_voronoi_diagram_traits {
+ typedef fpt80 coordinate_type;
+ typedef voronoi_cell<coordinate_type> cell_type;
+ typedef voronoi_vertex<coordinate_type> vertex_type;
+ typedef voronoi_edge<coordinate_type> edge_type;
+ typedef class {
+ public:
+ enum { ULPS = 128 };
+ bool operator()(const vertex_type &v1, const vertex_type &v2) const {
+ return (ulp_cmp(v1.x(), v2.x(), ULPS) == my_ulp_comparison::EQUAL &&
+ ulp_cmp(v1.y(), v2.y(), ULPS) == my_ulp_comparison::EQUAL);
+ }
+ private:
+ my_ulp_comparison ulp_cmp;
+ } vertex_equality_predicate_type;
+};
+
+// Voronoi ctype traits for 48-bit signed integer input coordinates.
+struct my_voronoi_ctype_traits {
+ typedef boost::int64_t int_type;
+ typedef detail::extended_int<3> int_x2_type;
+ typedef detail::extended_int<3> uint_x2_type;
+ typedef detail::extended_int<128> big_int_type;
+ typedef fpt80 fpt_type;
+ typedef fpt80 efpt_type;
+ typedef my_ulp_comparison ulp_cmp_type;
+ typedef my_fpt_converter to_fpt_converter_type;
+ typedef my_fpt_converter to_efpt_converter_type;
+};
+
+const unsigned int GENERATED_POINTS = 100;
+const boost::int64_t MAX = 0x1000000000000LL;
+
+int main() {
+ boost::mt19937_64 gen(std::time(0));
+ boost::random::uniform_int_distribution<boost::int64_t> distr(-MAX, MAX-1);
+ voronoi_builder<boost::int64_t, my_voronoi_ctype_traits> vb;
+ for (size_t i = 0; i < GENERATED_POINTS; ++i) {
+ boost::int64_t x = distr(gen);
+ boost::int64_t y = distr(gen);
+ vb.insert_point(x, y);
+ }
+
+ printf("Constructing Voronoi diagram of %d points...\n", GENERATED_POINTS);
+ boost::timer::cpu_timer t;
+ voronoi_diagram<fpt80, my_voronoi_diagram_traits> vd;
+ t.start();
+ vb.construct(&vd);
+ boost::timer::cpu_times times = t.elapsed();
+ std::string ftime = boost::timer::format(times, 5, "%w");
+
+ printf("Construction done in: %s seconds.\n", ftime.c_str());
+ printf("Resulting Voronoi graph has the following stats:\n");
+ printf("Number of Voronoi cells: %lu.\n", vd.num_cells());
+ printf("Number of Voronoi vertices: %lu.\n", vd.num_vertices());
+ printf("Number of Voronoi edges: %lu.\n", vd.num_edges());
+ return 0;
+}
diff --git a/src/boost/libs/polygon/example/voronoi_basic_tutorial.cpp b/src/boost/libs/polygon/example/voronoi_basic_tutorial.cpp
new file mode 100644
index 00000000..84f0e468
--- /dev/null
+++ b/src/boost/libs/polygon/example/voronoi_basic_tutorial.cpp
@@ -0,0 +1,198 @@
+// Boost.Polygon library voronoi_basic_tutorial.cpp file
+
+// Copyright Andrii Sydorchuk 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#include <cstdio>
+#include <vector>
+
+#include <boost/polygon/voronoi.hpp>
+using boost::polygon::voronoi_builder;
+using boost::polygon::voronoi_diagram;
+using boost::polygon::x;
+using boost::polygon::y;
+using boost::polygon::low;
+using boost::polygon::high;
+
+#include "voronoi_visual_utils.hpp"
+
+struct Point {
+ int a;
+ int b;
+ Point(int x, int y) : a(x), b(y) {}
+};
+
+struct Segment {
+ Point p0;
+ Point p1;
+ Segment(int x1, int y1, int x2, int y2) : p0(x1, y1), p1(x2, y2) {}
+};
+
+namespace boost {
+namespace polygon {
+
+template <>
+struct geometry_concept<Point> {
+ typedef point_concept type;
+};
+
+template <>
+struct point_traits<Point> {
+ typedef int coordinate_type;
+
+ static inline coordinate_type get(
+ const Point& point, orientation_2d orient) {
+ return (orient == HORIZONTAL) ? point.a : point.b;
+ }
+};
+
+template <>
+struct geometry_concept<Segment> {
+ typedef segment_concept type;
+};
+
+template <>
+struct segment_traits<Segment> {
+ typedef int coordinate_type;
+ typedef Point point_type;
+
+ static inline point_type get(const Segment& segment, direction_1d dir) {
+ return dir.to_int() ? segment.p1 : segment.p0;
+ }
+};
+} // polygon
+} // boost
+
+// Traversing Voronoi edges using edge iterator.
+int iterate_primary_edges1(const voronoi_diagram<double>& vd) {
+ int result = 0;
+ for (voronoi_diagram<double>::const_edge_iterator it = vd.edges().begin();
+ it != vd.edges().end(); ++it) {
+ if (it->is_primary())
+ ++result;
+ }
+ return result;
+}
+
+// Traversing Voronoi edges using cell iterator.
+int iterate_primary_edges2(const voronoi_diagram<double> &vd) {
+ int result = 0;
+ for (voronoi_diagram<double>::const_cell_iterator it = vd.cells().begin();
+ it != vd.cells().end(); ++it) {
+ const voronoi_diagram<double>::cell_type& cell = *it;
+ const voronoi_diagram<double>::edge_type* edge = cell.incident_edge();
+ // This is convenient way to iterate edges around Voronoi cell.
+ do {
+ if (edge->is_primary())
+ ++result;
+ edge = edge->next();
+ } while (edge != cell.incident_edge());
+ }
+ return result;
+}
+
+// Traversing Voronoi edges using vertex iterator.
+// As opposite to the above two functions this one will not iterate through
+// edges without finite endpoints and will iterate only once through edges
+// with single finite endpoint.
+int iterate_primary_edges3(const voronoi_diagram<double> &vd) {
+ int result = 0;
+ for (voronoi_diagram<double>::const_vertex_iterator it =
+ vd.vertices().begin(); it != vd.vertices().end(); ++it) {
+ const voronoi_diagram<double>::vertex_type& vertex = *it;
+ const voronoi_diagram<double>::edge_type* edge = vertex.incident_edge();
+ // This is convenient way to iterate edges around Voronoi vertex.
+ do {
+ if (edge->is_primary())
+ ++result;
+ edge = edge->rot_next();
+ } while (edge != vertex.incident_edge());
+ }
+ return result;
+}
+
+int main() {
+ // Preparing Input Geometries.
+ std::vector<Point> points;
+ points.push_back(Point(0, 0));
+ points.push_back(Point(1, 6));
+ std::vector<Segment> segments;
+ segments.push_back(Segment(-4, 5, 5, -1));
+ segments.push_back(Segment(3, -11, 13, -1));
+
+ // Construction of the Voronoi Diagram.
+ voronoi_diagram<double> vd;
+ construct_voronoi(points.begin(), points.end(),
+ segments.begin(), segments.end(),
+ &vd);
+
+ // Traversing Voronoi Graph.
+ {
+ printf("Traversing Voronoi graph.\n");
+ printf("Number of visited primary edges using edge iterator: %d\n",
+ iterate_primary_edges1(vd));
+ printf("Number of visited primary edges using cell iterator: %d\n",
+ iterate_primary_edges2(vd));
+ printf("Number of visited primary edges using vertex iterator: %d\n",
+ iterate_primary_edges3(vd));
+ printf("\n");
+ }
+
+ // Using color member of the Voronoi primitives to store the average number
+ // of edges around each cell (including secondary edges).
+ {
+ printf("Number of edges (including secondary) around the Voronoi cells:\n");
+ for (voronoi_diagram<double>::const_edge_iterator it = vd.edges().begin();
+ it != vd.edges().end(); ++it) {
+ std::size_t cnt = it->cell()->color();
+ it->cell()->color(cnt + 1);
+ }
+ for (voronoi_diagram<double>::const_cell_iterator it = vd.cells().begin();
+ it != vd.cells().end(); ++it) {
+ printf("%lu ", it->color());
+ }
+ printf("\n");
+ printf("\n");
+ }
+
+ // Linking Voronoi cells with input geometries.
+ {
+ unsigned int cell_index = 0;
+ for (voronoi_diagram<double>::const_cell_iterator it = vd.cells().begin();
+ it != vd.cells().end(); ++it) {
+ if (it->contains_point()) {
+ if (it->source_category() ==
+ boost::polygon::SOURCE_CATEGORY_SINGLE_POINT) {
+ std::size_t index = it->source_index();
+ Point p = points[index];
+ printf("Cell #%u contains a point: (%d, %d).\n",
+ cell_index, x(p), y(p));
+ } else if (it->source_category() ==
+ boost::polygon::SOURCE_CATEGORY_SEGMENT_START_POINT) {
+ std::size_t index = it->source_index() - points.size();
+ Point p0 = low(segments[index]);
+ printf("Cell #%u contains segment start point: (%d, %d).\n",
+ cell_index, x(p0), y(p0));
+ } else if (it->source_category() ==
+ boost::polygon::SOURCE_CATEGORY_SEGMENT_END_POINT) {
+ std::size_t index = it->source_index() - points.size();
+ Point p1 = high(segments[index]);
+ printf("Cell #%u contains segment end point: (%d, %d).\n",
+ cell_index, x(p1), y(p1));
+ }
+ } else {
+ std::size_t index = it->source_index() - points.size();
+ Point p0 = low(segments[index]);
+ Point p1 = high(segments[index]);
+ printf("Cell #%u contains a segment: ((%d, %d), (%d, %d)). \n",
+ cell_index, x(p0), y(p0), x(p1), y(p1));
+ }
+ ++cell_index;
+ }
+ }
+ return 0;
+}
diff --git a/src/boost/libs/polygon/example/voronoi_visual_utils.hpp b/src/boost/libs/polygon/example/voronoi_visual_utils.hpp
new file mode 100644
index 00000000..4ef2e9dc
--- /dev/null
+++ b/src/boost/libs/polygon/example/voronoi_visual_utils.hpp
@@ -0,0 +1,186 @@
+// Boost.Polygon library voronoi_graphic_utils.hpp header file
+
+// Copyright Andrii Sydorchuk 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_POLYGON_VORONOI_VISUAL_UTILS
+#define BOOST_POLYGON_VORONOI_VISUAL_UTILS
+
+#include <stack>
+#include <vector>
+
+#include <boost/polygon/isotropy.hpp>
+#include <boost/polygon/point_concept.hpp>
+#include <boost/polygon/segment_concept.hpp>
+#include <boost/polygon/rectangle_concept.hpp>
+
+namespace boost {
+namespace polygon {
+// Utilities class, that contains set of routines handful for visualization.
+template <typename CT>
+class voronoi_visual_utils {
+ public:
+ // Discretize parabolic Voronoi edge.
+ // Parabolic Voronoi edges are always formed by one point and one segment
+ // from the initial input set.
+ //
+ // Args:
+ // point: input point.
+ // segment: input segment.
+ // max_dist: maximum discretization distance.
+ // discretization: point discretization of the given Voronoi edge.
+ //
+ // Template arguments:
+ // InCT: coordinate type of the input geometries (usually integer).
+ // Point: point type, should model point concept.
+ // Segment: segment type, should model segment concept.
+ //
+ // Important:
+ // discretization should contain both edge endpoints initially.
+ template <class InCT1, class InCT2,
+ template<class> class Point,
+ template<class> class Segment>
+ static
+ typename enable_if<
+ typename gtl_and<
+ typename gtl_if<
+ typename is_point_concept<
+ typename geometry_concept< Point<InCT1> >::type
+ >::type
+ >::type,
+ typename gtl_if<
+ typename is_segment_concept<
+ typename geometry_concept< Segment<InCT2> >::type
+ >::type
+ >::type
+ >::type,
+ void
+ >::type discretize(
+ const Point<InCT1>& point,
+ const Segment<InCT2>& segment,
+ const CT max_dist,
+ std::vector< Point<CT> >* discretization) {
+ // Apply the linear transformation to move start point of the segment to
+ // the point with coordinates (0, 0) and the direction of the segment to
+ // coincide the positive direction of the x-axis.
+ CT segm_vec_x = cast(x(high(segment))) - cast(x(low(segment)));
+ CT segm_vec_y = cast(y(high(segment))) - cast(y(low(segment)));
+ CT sqr_segment_length = segm_vec_x * segm_vec_x + segm_vec_y * segm_vec_y;
+
+ // Compute x-coordinates of the endpoints of the edge
+ // in the transformed space.
+ CT projection_start = sqr_segment_length *
+ get_point_projection((*discretization)[0], segment);
+ CT projection_end = sqr_segment_length *
+ get_point_projection((*discretization)[1], segment);
+
+ // Compute parabola parameters in the transformed space.
+ // Parabola has next representation:
+ // f(x) = ((x-rot_x)^2 + rot_y^2) / (2.0*rot_y).
+ CT point_vec_x = cast(x(point)) - cast(x(low(segment)));
+ CT point_vec_y = cast(y(point)) - cast(y(low(segment)));
+ CT rot_x = segm_vec_x * point_vec_x + segm_vec_y * point_vec_y;
+ CT rot_y = segm_vec_x * point_vec_y - segm_vec_y * point_vec_x;
+
+ // Save the last point.
+ Point<CT> last_point = (*discretization)[1];
+ discretization->pop_back();
+
+ // Use stack to avoid recursion.
+ std::stack<CT> point_stack;
+ point_stack.push(projection_end);
+ CT cur_x = projection_start;
+ CT cur_y = parabola_y(cur_x, rot_x, rot_y);
+
+ // Adjust max_dist parameter in the transformed space.
+ const CT max_dist_transformed = max_dist * max_dist * sqr_segment_length;
+ while (!point_stack.empty()) {
+ CT new_x = point_stack.top();
+ CT new_y = parabola_y(new_x, rot_x, rot_y);
+
+ // Compute coordinates of the point of the parabola that is
+ // furthest from the current line segment.
+ CT mid_x = (new_y - cur_y) / (new_x - cur_x) * rot_y + rot_x;
+ CT mid_y = parabola_y(mid_x, rot_x, rot_y);
+
+ // Compute maximum distance between the given parabolic arc
+ // and line segment that discretize it.
+ CT dist = (new_y - cur_y) * (mid_x - cur_x) -
+ (new_x - cur_x) * (mid_y - cur_y);
+ dist = dist * dist / ((new_y - cur_y) * (new_y - cur_y) +
+ (new_x - cur_x) * (new_x - cur_x));
+ if (dist <= max_dist_transformed) {
+ // Distance between parabola and line segment is less than max_dist.
+ point_stack.pop();
+ CT inter_x = (segm_vec_x * new_x - segm_vec_y * new_y) /
+ sqr_segment_length + cast(x(low(segment)));
+ CT inter_y = (segm_vec_x * new_y + segm_vec_y * new_x) /
+ sqr_segment_length + cast(y(low(segment)));
+ discretization->push_back(Point<CT>(inter_x, inter_y));
+ cur_x = new_x;
+ cur_y = new_y;
+ } else {
+ point_stack.push(mid_x);
+ }
+ }
+
+ // Update last point.
+ discretization->back() = last_point;
+ }
+
+ private:
+ // Compute y(x) = ((x - a) * (x - a) + b * b) / (2 * b).
+ static CT parabola_y(CT x, CT a, CT b) {
+ return ((x - a) * (x - a) + b * b) / (b + b);
+ }
+
+ // Get normalized length of the distance between:
+ // 1) point projection onto the segment
+ // 2) start point of the segment
+ // Return this length divided by the segment length. This is made to avoid
+ // sqrt computation during transformation from the initial space to the
+ // transformed one and vice versa. The assumption is made that projection of
+ // the point lies between the start-point and endpoint of the segment.
+ template <class InCT,
+ template<class> class Point,
+ template<class> class Segment>
+ static
+ typename enable_if<
+ typename gtl_and<
+ typename gtl_if<
+ typename is_point_concept<
+ typename geometry_concept< Point<int> >::type
+ >::type
+ >::type,
+ typename gtl_if<
+ typename is_segment_concept<
+ typename geometry_concept< Segment<long> >::type
+ >::type
+ >::type
+ >::type,
+ CT
+ >::type get_point_projection(
+ const Point<CT>& point, const Segment<InCT>& segment) {
+ CT segment_vec_x = cast(x(high(segment))) - cast(x(low(segment)));
+ CT segment_vec_y = cast(y(high(segment))) - cast(y(low(segment)));
+ CT point_vec_x = x(point) - cast(x(low(segment)));
+ CT point_vec_y = y(point) - cast(y(low(segment)));
+ CT sqr_segment_length =
+ segment_vec_x * segment_vec_x + segment_vec_y * segment_vec_y;
+ CT vec_dot = segment_vec_x * point_vec_x + segment_vec_y * point_vec_y;
+ return vec_dot / sqr_segment_length;
+ }
+
+ template <typename InCT>
+ static CT cast(const InCT& value) {
+ return static_cast<CT>(value);
+ }
+};
+}
+}
+
+#endif // BOOST_POLYGON_VORONOI_VISUAL_UTILS
diff --git a/src/boost/libs/polygon/example/voronoi_visualizer.cpp b/src/boost/libs/polygon/example/voronoi_visualizer.cpp
new file mode 100644
index 00000000..3049c387
--- /dev/null
+++ b/src/boost/libs/polygon/example/voronoi_visualizer.cpp
@@ -0,0 +1,509 @@
+// Boost.Polygon library voronoi_visualizer.cpp file
+
+// Copyright Andrii Sydorchuk 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#include <iostream>
+#include <vector>
+
+#include <QtOpenGL/QGLWidget>
+#include <QtGui/QtGui>
+
+#include <boost/polygon/polygon.hpp>
+#include <boost/polygon/voronoi.hpp>
+using namespace boost::polygon;
+
+#include "voronoi_visual_utils.hpp"
+
+class GLWidget : public QGLWidget {
+ Q_OBJECT
+
+ public:
+ explicit GLWidget(QMainWindow* parent = NULL) :
+ QGLWidget(QGLFormat(QGL::SampleBuffers), parent),
+ primary_edges_only_(false),
+ internal_edges_only_(false) {
+ startTimer(40);
+ }
+
+ QSize sizeHint() const {
+ return QSize(600, 600);
+ }
+
+ void build(const QString& file_path) {
+ // Clear all containers.
+ clear();
+
+ // Read data.
+ read_data(file_path);
+
+ // No data, don't proceed.
+ if (!brect_initialized_) {
+ return;
+ }
+
+ // Construct bounding rectangle.
+ construct_brect();
+
+ // Construct voronoi diagram.
+ construct_voronoi(
+ point_data_.begin(), point_data_.end(),
+ segment_data_.begin(), segment_data_.end(),
+ &vd_);
+
+ // Color exterior edges.
+ for (const_edge_iterator it = vd_.edges().begin();
+ it != vd_.edges().end(); ++it) {
+ if (!it->is_finite()) {
+ color_exterior(&(*it));
+ }
+ }
+
+ // Update view port.
+ update_view_port();
+ }
+
+ void show_primary_edges_only() {
+ primary_edges_only_ ^= true;
+ }
+
+ void show_internal_edges_only() {
+ internal_edges_only_ ^= true;
+ }
+
+ protected:
+ void initializeGL() {
+ glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ glEnable(GL_POINT_SMOOTH);
+ }
+
+ void paintGL() {
+ qglClearColor(QColor::fromRgb(255, 255, 255));
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ draw_points();
+ draw_segments();
+ draw_vertices();
+ draw_edges();
+ }
+
+ void resizeGL(int width, int height) {
+ int side = qMin(width, height);
+ glViewport((width - side) / 2, (height - side) / 2, side, side);
+ }
+
+ void timerEvent(QTimerEvent* e) {
+ update();
+ }
+
+ private:
+ typedef double coordinate_type;
+ typedef point_data<coordinate_type> point_type;
+ typedef segment_data<coordinate_type> segment_type;
+ typedef rectangle_data<coordinate_type> rect_type;
+ typedef voronoi_builder<int> VB;
+ typedef voronoi_diagram<coordinate_type> VD;
+ typedef VD::cell_type cell_type;
+ typedef VD::cell_type::source_index_type source_index_type;
+ typedef VD::cell_type::source_category_type source_category_type;
+ typedef VD::edge_type edge_type;
+ typedef VD::cell_container_type cell_container_type;
+ typedef VD::cell_container_type vertex_container_type;
+ typedef VD::edge_container_type edge_container_type;
+ typedef VD::const_cell_iterator const_cell_iterator;
+ typedef VD::const_vertex_iterator const_vertex_iterator;
+ typedef VD::const_edge_iterator const_edge_iterator;
+
+ static const std::size_t EXTERNAL_COLOR = 1;
+
+ void clear() {
+ brect_initialized_ = false;
+ point_data_.clear();
+ segment_data_.clear();
+ vd_.clear();
+ }
+
+ void read_data(const QString& file_path) {
+ QFile data(file_path);
+ if (!data.open(QFile::ReadOnly)) {
+ QMessageBox::warning(
+ this, tr("Voronoi Visualizer"),
+ tr("Disable to open file ") + file_path);
+ }
+ QTextStream in_stream(&data);
+ std::size_t num_points, num_segments;
+ int x1, y1, x2, y2;
+ in_stream >> num_points;
+ for (std::size_t i = 0; i < num_points; ++i) {
+ in_stream >> x1 >> y1;
+ point_type p(x1, y1);
+ update_brect(p);
+ point_data_.push_back(p);
+ }
+ in_stream >> num_segments;
+ for (std::size_t i = 0; i < num_segments; ++i) {
+ in_stream >> x1 >> y1 >> x2 >> y2;
+ point_type lp(x1, y1);
+ point_type hp(x2, y2);
+ update_brect(lp);
+ update_brect(hp);
+ segment_data_.push_back(segment_type(lp, hp));
+ }
+ in_stream.flush();
+ }
+
+ void update_brect(const point_type& point) {
+ if (brect_initialized_) {
+ encompass(brect_, point);
+ } else {
+ set_points(brect_, point, point);
+ brect_initialized_ = true;
+ }
+ }
+
+ void construct_brect() {
+ double side = (std::max)(xh(brect_) - xl(brect_), yh(brect_) - yl(brect_));
+ center(shift_, brect_);
+ set_points(brect_, shift_, shift_);
+ bloat(brect_, side * 1.2);
+ }
+
+ void color_exterior(const VD::edge_type* edge) {
+ if (edge->color() == EXTERNAL_COLOR) {
+ return;
+ }
+ edge->color(EXTERNAL_COLOR);
+ edge->twin()->color(EXTERNAL_COLOR);
+ const VD::vertex_type* v = edge->vertex1();
+ if (v == NULL || !edge->is_primary()) {
+ return;
+ }
+ v->color(EXTERNAL_COLOR);
+ const VD::edge_type* e = v->incident_edge();
+ do {
+ color_exterior(e);
+ e = e->rot_next();
+ } while (e != v->incident_edge());
+ }
+
+ void update_view_port() {
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ rect_type view_rect = brect_;
+ deconvolve(view_rect, shift_);
+ glOrtho(xl(view_rect), xh(view_rect),
+ yl(view_rect), yh(view_rect),
+ -1.0, 1.0);
+ glMatrixMode(GL_MODELVIEW);
+ }
+
+ void draw_points() {
+ // Draw input points and endpoints of the input segments.
+ glColor3f(0.0f, 0.5f, 1.0f);
+ glPointSize(9);
+ glBegin(GL_POINTS);
+ for (std::size_t i = 0; i < point_data_.size(); ++i) {
+ point_type point = point_data_[i];
+ deconvolve(point, shift_);
+ glVertex2f(point.x(), point.y());
+ }
+ for (std::size_t i = 0; i < segment_data_.size(); ++i) {
+ point_type lp = low(segment_data_[i]);
+ lp = deconvolve(lp, shift_);
+ glVertex2f(lp.x(), lp.y());
+ point_type hp = high(segment_data_[i]);
+ hp = deconvolve(hp, shift_);
+ glVertex2f(hp.x(), hp.y());
+ }
+ glEnd();
+ }
+
+ void draw_segments() {
+ // Draw input segments.
+ glColor3f(0.0f, 0.5f, 1.0f);
+ glLineWidth(2.7f);
+ glBegin(GL_LINES);
+ for (std::size_t i = 0; i < segment_data_.size(); ++i) {
+ point_type lp = low(segment_data_[i]);
+ lp = deconvolve(lp, shift_);
+ glVertex2f(lp.x(), lp.y());
+ point_type hp = high(segment_data_[i]);
+ hp = deconvolve(hp, shift_);
+ glVertex2f(hp.x(), hp.y());
+ }
+ glEnd();
+ }
+
+ void draw_vertices() {
+ // Draw voronoi vertices.
+ glColor3f(0.0f, 0.0f, 0.0f);
+ glPointSize(6);
+ glBegin(GL_POINTS);
+ for (const_vertex_iterator it = vd_.vertices().begin();
+ it != vd_.vertices().end(); ++it) {
+ if (internal_edges_only_ && (it->color() == EXTERNAL_COLOR)) {
+ continue;
+ }
+ point_type vertex(it->x(), it->y());
+ vertex = deconvolve(vertex, shift_);
+ glVertex2f(vertex.x(), vertex.y());
+ }
+ glEnd();
+ }
+ void draw_edges() {
+ // Draw voronoi edges.
+ glColor3f(0.0f, 0.0f, 0.0f);
+ glLineWidth(1.7f);
+ for (const_edge_iterator it = vd_.edges().begin();
+ it != vd_.edges().end(); ++it) {
+ if (primary_edges_only_ && !it->is_primary()) {
+ continue;
+ }
+ if (internal_edges_only_ && (it->color() == EXTERNAL_COLOR)) {
+ continue;
+ }
+ std::vector<point_type> samples;
+ if (!it->is_finite()) {
+ clip_infinite_edge(*it, &samples);
+ } else {
+ point_type vertex0(it->vertex0()->x(), it->vertex0()->y());
+ samples.push_back(vertex0);
+ point_type vertex1(it->vertex1()->x(), it->vertex1()->y());
+ samples.push_back(vertex1);
+ if (it->is_curved()) {
+ sample_curved_edge(*it, &samples);
+ }
+ }
+ glBegin(GL_LINE_STRIP);
+ for (std::size_t i = 0; i < samples.size(); ++i) {
+ point_type vertex = deconvolve(samples[i], shift_);
+ glVertex2f(vertex.x(), vertex.y());
+ }
+ glEnd();
+ }
+ }
+
+ void clip_infinite_edge(
+ const edge_type& edge, std::vector<point_type>* clipped_edge) {
+ const cell_type& cell1 = *edge.cell();
+ const cell_type& cell2 = *edge.twin()->cell();
+ point_type origin, direction;
+ // Infinite edges could not be created by two segment sites.
+ if (cell1.contains_point() && cell2.contains_point()) {
+ point_type p1 = retrieve_point(cell1);
+ point_type p2 = retrieve_point(cell2);
+ origin.x((p1.x() + p2.x()) * 0.5);
+ origin.y((p1.y() + p2.y()) * 0.5);
+ direction.x(p1.y() - p2.y());
+ direction.y(p2.x() - p1.x());
+ } else {
+ origin = cell1.contains_segment() ?
+ retrieve_point(cell2) :
+ retrieve_point(cell1);
+ segment_type segment = cell1.contains_segment() ?
+ retrieve_segment(cell1) :
+ retrieve_segment(cell2);
+ coordinate_type dx = high(segment).x() - low(segment).x();
+ coordinate_type dy = high(segment).y() - low(segment).y();
+ if ((low(segment) == origin) ^ cell1.contains_point()) {
+ direction.x(dy);
+ direction.y(-dx);
+ } else {
+ direction.x(-dy);
+ direction.y(dx);
+ }
+ }
+ coordinate_type side = xh(brect_) - xl(brect_);
+ coordinate_type koef =
+ side / (std::max)(fabs(direction.x()), fabs(direction.y()));
+ if (edge.vertex0() == NULL) {
+ clipped_edge->push_back(point_type(
+ origin.x() - direction.x() * koef,
+ origin.y() - direction.y() * koef));
+ } else {
+ clipped_edge->push_back(
+ point_type(edge.vertex0()->x(), edge.vertex0()->y()));
+ }
+ if (edge.vertex1() == NULL) {
+ clipped_edge->push_back(point_type(
+ origin.x() + direction.x() * koef,
+ origin.y() + direction.y() * koef));
+ } else {
+ clipped_edge->push_back(
+ point_type(edge.vertex1()->x(), edge.vertex1()->y()));
+ }
+ }
+
+ void sample_curved_edge(
+ const edge_type& edge,
+ std::vector<point_type>* sampled_edge) {
+ coordinate_type max_dist = 1E-3 * (xh(brect_) - xl(brect_));
+ point_type point = edge.cell()->contains_point() ?
+ retrieve_point(*edge.cell()) :
+ retrieve_point(*edge.twin()->cell());
+ segment_type segment = edge.cell()->contains_point() ?
+ retrieve_segment(*edge.twin()->cell()) :
+ retrieve_segment(*edge.cell());
+ voronoi_visual_utils<coordinate_type>::discretize(
+ point, segment, max_dist, sampled_edge);
+ }
+
+ point_type retrieve_point(const cell_type& cell) {
+ source_index_type index = cell.source_index();
+ source_category_type category = cell.source_category();
+ if (category == SOURCE_CATEGORY_SINGLE_POINT) {
+ return point_data_[index];
+ }
+ index -= point_data_.size();
+ if (category == SOURCE_CATEGORY_SEGMENT_START_POINT) {
+ return low(segment_data_[index]);
+ } else {
+ return high(segment_data_[index]);
+ }
+ }
+
+ segment_type retrieve_segment(const cell_type& cell) {
+ source_index_type index = cell.source_index() - point_data_.size();
+ return segment_data_[index];
+ }
+
+ point_type shift_;
+ std::vector<point_type> point_data_;
+ std::vector<segment_type> segment_data_;
+ rect_type brect_;
+ VB vb_;
+ VD vd_;
+ bool brect_initialized_;
+ bool primary_edges_only_;
+ bool internal_edges_only_;
+};
+
+class MainWindow : public QWidget {
+ Q_OBJECT
+
+ public:
+ MainWindow() {
+ glWidget_ = new GLWidget();
+ file_dir_ = QDir(QDir::currentPath(), tr("*.txt"));
+ file_name_ = tr("");
+
+ QHBoxLayout* centralLayout = new QHBoxLayout;
+ centralLayout->addWidget(glWidget_);
+ centralLayout->addLayout(create_file_layout());
+ setLayout(centralLayout);
+
+ update_file_list();
+ setWindowTitle(tr("Voronoi Visualizer"));
+ layout()->setSizeConstraint(QLayout::SetFixedSize);
+ }
+
+ private slots:
+ void primary_edges_only() {
+ glWidget_->show_primary_edges_only();
+ }
+
+ void internal_edges_only() {
+ glWidget_->show_internal_edges_only();
+ }
+
+ void browse() {
+ QString new_path = QFileDialog::getExistingDirectory(
+ 0, tr("Choose Directory"), file_dir_.absolutePath());
+ if (new_path.isEmpty()) {
+ return;
+ }
+ file_dir_.setPath(new_path);
+ update_file_list();
+ }
+
+ void build() {
+ file_name_ = file_list_->currentItem()->text();
+ QString file_path = file_dir_.filePath(file_name_);
+ message_label_->setText("Building...");
+ glWidget_->build(file_path);
+ message_label_->setText("Double click the item to build voronoi diagram:");
+ setWindowTitle(tr("Voronoi Visualizer - ") + file_path);
+ }
+
+ void print_scr() {
+ if (!file_name_.isEmpty()) {
+ QImage screenshot = glWidget_->grabFrameBuffer(true);
+ QString output_file = file_dir_.absolutePath() + tr("/") +
+ file_name_.left(file_name_.indexOf('.')) + tr(".png");
+ screenshot.save(output_file, 0, -1);
+ }
+ }
+
+ private:
+ QGridLayout* create_file_layout() {
+ QGridLayout* file_layout = new QGridLayout;
+
+ message_label_ = new QLabel("Double click item to build voronoi diagram:");
+
+ file_list_ = new QListWidget();
+ file_list_->connect(file_list_,
+ SIGNAL(itemDoubleClicked(QListWidgetItem*)),
+ this,
+ SLOT(build()));
+
+ QCheckBox* primary_checkbox = new QCheckBox("Show primary edges only.");
+ connect(primary_checkbox, SIGNAL(clicked()),
+ this, SLOT(primary_edges_only()));
+
+ QCheckBox* internal_checkbox = new QCheckBox("Show internal edges only.");
+ connect(internal_checkbox, SIGNAL(clicked()),
+ this, SLOT(internal_edges_only()));
+
+ QPushButton* browse_button =
+ new QPushButton(tr("Browse Input Directory"));
+ connect(browse_button, SIGNAL(clicked()), this, SLOT(browse()));
+ browse_button->setMinimumHeight(50);
+
+ QPushButton* print_scr_button = new QPushButton(tr("Make Screenshot"));
+ connect(print_scr_button, SIGNAL(clicked()), this, SLOT(print_scr()));
+ print_scr_button->setMinimumHeight(50);
+
+ file_layout->addWidget(message_label_, 0, 0);
+ file_layout->addWidget(file_list_, 1, 0);
+ file_layout->addWidget(primary_checkbox, 2, 0);
+ file_layout->addWidget(internal_checkbox, 3, 0);
+ file_layout->addWidget(browse_button, 4, 0);
+ file_layout->addWidget(print_scr_button, 5, 0);
+
+ return file_layout;
+ }
+
+ void update_file_list() {
+ QFileInfoList list = file_dir_.entryInfoList();
+ file_list_->clear();
+ if (file_dir_.count() == 0) {
+ return;
+ }
+ QFileInfoList::const_iterator it;
+ for (it = list.begin(); it != list.end(); it++) {
+ file_list_->addItem(it->fileName());
+ }
+ file_list_->setCurrentRow(0);
+ }
+
+ QDir file_dir_;
+ QString file_name_;
+ GLWidget* glWidget_;
+ QListWidget* file_list_;
+ QLabel* message_label_;
+};
+
+int main(int argc, char* argv[]) {
+ QApplication app(argc, argv);
+ MainWindow window;
+ window.show();
+ return app.exec();
+}
+
+#include "voronoi_visualizer.moc"