summaryrefslogtreecommitdiff
path: root/libs/geometry
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2013-08-26 08:15:55 -0400
committerAnas Nashif <anas.nashif@intel.com>2013-08-26 08:15:55 -0400
commitbb4dd8289b351fae6b55e303f189127a394a1edd (patch)
tree77c9c35a31b1459dd7988c2448e797d142530c41 /libs/geometry
parent1a78a62555be32868418fe52f8e330c9d0f95d5a (diff)
downloadboost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.gz
boost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.bz2
boost-bb4dd8289b351fae6b55e303f189127a394a1edd.zip
Imported Upstream version 1.51.0upstream/1.51.0
Diffstat (limited to 'libs/geometry')
-rw-r--r--libs/geometry/doc/Jamfile.v22
-rw-r--r--libs/geometry/doc/acknowledgments.qbk3
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp1
-rw-r--r--libs/geometry/doc/geometry.qbk1
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/aboutdoc.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/acknowledgments.html4
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/compilation.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/design.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/indexes.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/indexes/alphabetical_index.html6
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/indexes/matrix.html104
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/introduction.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/quickstart.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference.html1
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/exterior_ring.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/get.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/get/get_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/interior_rings.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/set.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/set/set_3.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_array.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_range.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/c_array.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms.html1
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/append.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/area.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/buffer.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/centroid.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/clear.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/convert.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/correct.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/difference.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/distance.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/envelope.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/equals.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/expand.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/for_each.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/intersection.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/intersects.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/length.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/make.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/num_points.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/reverse.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/simplify.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html38
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches.html50
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html159
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html184
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/transform.html6
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/union_.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/unique.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/within.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_box.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_point.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/constants.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/constants/max_corner.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/constants/min_corner.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/closure.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/coordinate_system.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/coordinate_type.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/cs_tag.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/degree.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/dimension.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/interior_type.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/is_radian.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/point_order.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/point_type.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/radian.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/ring_type.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/tag.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/core/tag_cast.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/cs.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/enumerations.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html8
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html8
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/exceptions.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/exceptions/exception.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/iterators.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_box.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_linestring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_multi_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_polygon.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_ring.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/models/model_segment.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views.html0
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views/box_view.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views/closeable_view.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views/identity_view.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views/reversible_view.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/reference/views/segment_view.html2
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry/release_notes.html92
-rw-r--r--[-rwxr-xr-x]libs/geometry/doc/html/geometry_HTML.manifest3
-rw-r--r--libs/geometry/doc/html/index.html5
-rwxr-xr-xlibs/geometry/doc/make_qbk.py2
-rw-r--r--libs/geometry/doc/quickref.xml3
-rw-r--r--libs/geometry/doc/reference.qbk4
-rw-r--r--libs/geometry/doc/reference/algorithms/touches.qbk19
-rw-r--r--libs/geometry/doc/release_notes.qbk42
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp54
-rw-r--r--libs/geometry/example/Jamfile.v21
-rw-r--r--libs/geometry/example/c05_custom_point_pointer_example.cpp28
-rw-r--r--libs/geometry/example/c07_custom_ring_pointer_example.cpp81
-rw-r--r--libs/geometry/test/algorithms/Jamfile.v21
-rw-r--r--libs/geometry/test/algorithms/algorithms_tests.sln6
-rw-r--r--libs/geometry/test/algorithms/difference.cpp31
-rw-r--r--libs/geometry/test/algorithms/disjoint.cpp15
-rw-r--r--libs/geometry/test/algorithms/distance.cpp4
-rw-r--r--libs/geometry/test/algorithms/intersection.cpp36
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turn_info.cpp14
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turns.cpp11
-rw-r--r--libs/geometry/test/algorithms/overlay/overlay_cases.hpp95
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp15
-rw-r--r--libs/geometry/test/algorithms/overlay/traverse.cpp67
-rw-r--r--libs/geometry/test/algorithms/test_touches.hpp61
-rw-r--r--libs/geometry/test/algorithms/test_union.hpp20
-rw-r--r--libs/geometry/test/algorithms/touches.cpp154
-rw-r--r--libs/geometry/test/algorithms/touches.vcproj174
-rw-r--r--libs/geometry/test/algorithms/union.cpp116
-rw-r--r--libs/geometry/test/core/ring.cpp8
-rw-r--r--libs/geometry/test/geometries/adapted.cpp2
-rw-r--r--libs/geometry/test/geometries/custom_linestring.cpp6
-rw-r--r--libs/geometry/test/multi/algorithms/Jamfile.v22
-rw-r--r--libs/geometry/test/multi/algorithms/multi_difference.cpp13
-rw-r--r--libs/geometry/test/multi/algorithms/multi_disjoint.cpp123
-rw-r--r--libs/geometry/test/multi/algorithms/multi_disjoint.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_intersection.cpp1
-rw-r--r--libs/geometry/test/multi/algorithms/multi_touches.cpp80
-rw-r--r--libs/geometry/test/multi/algorithms/multi_touches.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_union.cpp3
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp2
-rw-r--r--libs/geometry/test/multi/io/wkt/wkt.cpp21
-rw-r--r--libs/geometry/test/multi/io/wkt/wkt.vcproj8
-rw-r--r--libs/geometry/test/multi/multi_tests.sln12
-rw-r--r--libs/geometry/test/robustness/common/common_settings.hpp32
-rw-r--r--libs/geometry/test/robustness/common/make_square_polygon.hpp46
-rw-r--r--libs/geometry/test/robustness/convex_hull/Jamfile.v218
-rw-r--r--libs/geometry/test/robustness/convex_hull/random_multi_points.cpp2
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/Jamfile.v219
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp352
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln20
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj222
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/Jamfile.v219
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp501
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln20
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj223
-rw-r--r--libs/geometry/test/strategies/Jamfile.v21
-rw-r--r--libs/geometry/test/strategies/cross_track.cpp37
-rw-r--r--libs/geometry/test/strategies/projected_point.cpp71
-rw-r--r--libs/geometry/test/strategies/strategies_tests.sln6
-rw-r--r--libs/geometry/test/strategies/transform_cs.cpp149
-rw-r--r--libs/geometry/test/strategies/transform_cs.vcproj174
-rw-r--r--libs/geometry/test/test_common/test_point.hpp3
-rw-r--r--libs/geometry/test/test_common/with_pointer.hpp33
-rw-r--r--libs/geometry/test/views/closeable_view.cpp2
302 files changed, 4200 insertions, 433 deletions
diff --git a/libs/geometry/doc/Jamfile.v2 b/libs/geometry/doc/Jamfile.v2
index c9e77c4e02..1deb3fd94d 100644
--- a/libs/geometry/doc/Jamfile.v2
+++ b/libs/geometry/doc/Jamfile.v2
@@ -41,3 +41,5 @@ boostbook geometry
<format>pdf:<xsl:param>img.src.path=$(images_location)/
;
+install pdfinstall : geometry/<format>pdf : <location>. <name>geometry.pdf <install-type>PDF ;
+explicit pdfinstall ;
diff --git a/libs/geometry/doc/acknowledgments.qbk b/libs/geometry/doc/acknowledgments.qbk
index cd0c212c24..929fa8d2a9 100644
--- a/libs/geometry/doc/acknowledgments.qbk
+++ b/libs/geometry/doc/acknowledgments.qbk
@@ -28,6 +28,9 @@ We also thank all people who discussed on the mailing lists (either at boost,
or at osgeo) about __boost_geometry__, in preview stage, or in review stage,
or after that.
+Furthermore we are thankful to people supplying patches: Arnold Metselaar,
+Aleksey Tulinov, Christophe Henry
+
Finally I (Barend) would like to thank my former employer, Geodan. They
allowed me to start a geographic library in 1995, which after a number of
incarnations, redesigns, refactorings, previews, a review and even more
diff --git a/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp b/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
index d141f6e12d..a6f1d88564 100644
--- a/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
+++ b/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
@@ -58,6 +58,7 @@
\defgroup strategies strategies: strategies
\defgroup svg x Extension svg: Stream SVG (Scalable Vector Graphics)
\defgroup sym_difference sym_difference: sym_difference of two geometries
+\defgroup touches touches: detect if a geometry self-touches or if two geometries touch
\defgroup traits traits: adapt geometries
\defgroup transform transform: apply transformations on geometries
\defgroup union union: calculate new geometry containing geometries A or B
diff --git a/libs/geometry/doc/geometry.qbk b/libs/geometry/doc/geometry.qbk
index 8297e3de7c..8059fe03af 100644
--- a/libs/geometry/doc/geometry.qbk
+++ b/libs/geometry/doc/geometry.qbk
@@ -110,6 +110,7 @@ Boost.Geometry contains contributions by:
* Alfredo Correa (adaption of Boost.Array)
* Adam Wulkiewicz (spatial indexes) [footnote Currently an extension]
* Federico Fern\u00E1ndez (spatial indexes) [footnote Currently an extension]
+* Karsten Ahnert (patch for cross-track distance)
[include imports.qbk]
diff --git a/libs/geometry/doc/html/geometry/aboutdoc.html b/libs/geometry/doc/html/geometry/aboutdoc.html
index 46e3953eb1..46e3953eb1 100755..100644
--- a/libs/geometry/doc/html/geometry/aboutdoc.html
+++ b/libs/geometry/doc/html/geometry/aboutdoc.html
diff --git a/libs/geometry/doc/html/geometry/acknowledgments.html b/libs/geometry/doc/html/geometry/acknowledgments.html
index 93f1b9ba53..76acc7df67 100755..100644
--- a/libs/geometry/doc/html/geometry/acknowledgments.html
+++ b/libs/geometry/doc/html/geometry/acknowledgments.html
@@ -46,6 +46,10 @@
after that.
</p>
<p>
+ Furthermore we are thankful to people supplying patches: Arnold Metselaar,
+ Aleksey Tulinov, Christophe Henry
+ </p>
+<p>
Finally I (Barend) would like to thank my former employer, Geodan. They allowed
me to start a geographic library in 1995, which after a number of incarnations,
redesigns, refactorings, previews, a review and even more refactorings have
diff --git a/libs/geometry/doc/html/geometry/compilation.html b/libs/geometry/doc/html/geometry/compilation.html
index ee1940fd81..ee1940fd81 100755..100644
--- a/libs/geometry/doc/html/geometry/compilation.html
+++ b/libs/geometry/doc/html/geometry/compilation.html
diff --git a/libs/geometry/doc/html/geometry/design.html b/libs/geometry/doc/html/geometry/design.html
index 1ea2335e90..1ea2335e90 100755..100644
--- a/libs/geometry/doc/html/geometry/design.html
+++ b/libs/geometry/doc/html/geometry/design.html
diff --git a/libs/geometry/doc/html/geometry/indexes.html b/libs/geometry/doc/html/geometry/indexes.html
index b2d420f282..b2d420f282 100755..100644
--- a/libs/geometry/doc/html/geometry/indexes.html
+++ b/libs/geometry/doc/html/geometry/indexes.html
diff --git a/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html b/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
index d7c11af171..1cb55e5763 100755..100644
--- a/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
+++ b/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
@@ -29,7 +29,7 @@
<p>
</p>
<div class="index">
-<div class="titlepage"><div><div><h4 class="title"><a name="id783830"></a></h4></div></div></div>
+<div class="titlepage"><div><div><h4 class="title"><a name="id783841"></a></h4></div></div></div>
<div class="index">
<div class="indexdiv">
<h3>A</h3>
@@ -427,6 +427,10 @@
</dt>
<dt>tag_cast, <a class="indexterm" href="../reference/core/tag_cast.html">tag_cast</a>
</dt>
+<dt>touches, <a class="indexterm" href="../reference/algorithms/touches/touches_1_one_geometry.html">touches
+ (one geometry)</a>, <a class="indexterm" href="../reference/algorithms/touches/touches_2_two_geometries.html">touches
+ (two geometries)</a>
+</dt>
<dt>transform, <a class="indexterm" href="../reference/algorithms/transform/transform_3_with_strategy.html">transform
(with strategy)</a>, <a class="indexterm" href="../reference/algorithms/transform/transform_2.html">transform</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_inverse_transformer.html">strategy::transform::inverse_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_map_transformer.html">strategy::transform::map_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_rotate_transformer.html">strategy::transform::rotate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_scale_transformer.html">strategy::transform::scale_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_translate_transformer.html">strategy::transform::translate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_ublas_transformer.html">strategy::transform::ublas_transformer</a>
</dt>
diff --git a/libs/geometry/doc/html/geometry/indexes/matrix.html b/libs/geometry/doc/html/geometry/indexes/matrix.html
index 7d2750ddd5..19c55a8541 100755..100644
--- a/libs/geometry/doc/html/geometry/indexes/matrix.html
+++ b/libs/geometry/doc/html/geometry/indexes/matrix.html
@@ -35,12 +35,12 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id780930"></a>Geometry Concepts</h3>
+<a name="id780938"></a>Geometry Concepts</h3>
</th></tr></thead>
<tbody><tr>
<td valign="top">
<h4>
-<a name="id780948"></a>0-dimensional</h4>
+<a name="id780955"></a>0-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_point.html" title="Point Concept">Point</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_multi_point.html" title="MultiPoint Concept">MultiPoint</a></td></tr>
@@ -48,7 +48,7 @@
</td>
<td valign="top">
<h4>
-<a name="id780987"></a>1-dimensional</h4>
+<a name="id780994"></a>1-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_segment.html" title="Segment Concept">Segment</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_linestring.html" title="Linestring Concept">Linestring</a></td></tr>
@@ -57,7 +57,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781034"></a>2-dimensional</h4>
+<a name="id781042"></a>2-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_box.html" title="Box Concept">Box</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_ring.html" title="Ring Concept">Ring</a></td></tr>
@@ -75,13 +75,13 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id781118"></a>Geometry Models</h3>
+<a name="id781125"></a>Geometry Models</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id781135"></a>0-dimensional</h4>
+<a name="id781142"></a>0-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_point.html" title="model::point">point</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_d2_point_xy.html" title="model::d2::point_xy">point_xy</a></td></tr>
@@ -90,7 +90,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781182"></a>1-dimensional</h4>
+<a name="id781190"></a>1-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_linestring.html" title="model::linestring">linestring</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_multi_linestring.html" title="model::multi_linestring">multi_linestring</a></td></tr>
@@ -100,7 +100,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781241"></a>2-dimensional</h4>
+<a name="id781248"></a>2-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_box.html" title="model::box">box</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_ring.html" title="model::ring">ring</a></td></tr>
@@ -112,7 +112,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id781300"></a>0-dimensional (adapted)</h4>
+<a name="id781308"></a>0-dimensional (adapted)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/boost_array.html" title="Boost.Array">Boost.Array</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/boost_fusion.html" title="Boost.Fusion">Boost.Fusion</a></td></tr>
@@ -123,8 +123,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781369"></a>1-dimensional (adapted)</h4>
- <table border="0" summary="Simple list" class="simplelist"></table>
+<a name="id781376"></a>1-dimensional (adapted)</h4>
</td>
<td valign="top">
<h4>
@@ -163,7 +162,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781617"></a>2-dimensional (macro's for adaption)</h4>
+<a name="id781618"></a>2-dimensional (macro's for adaption)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_box.html" title="BOOST_GEOMETRY_REGISTER_BOX">BOOST_GEOMETRY_REGISTER_BOX</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_box_2d_4values.html" title="BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a></td></tr>
@@ -207,7 +206,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781889"></a>Access Functions</h4>
+<a name="id781890"></a>Access Functions</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/access/get.html" title="get">get</a></td></tr>
<tr><td><a class="link" href="../reference/access/set.html" title="set">set</a></td></tr>
@@ -236,7 +235,7 @@
</th>
<th colspan="2" valign="center">
<h3>
-<a name="id782022"></a>Coordinate Systems</h3>
+<a name="id782023"></a>Coordinate Systems</h3>
</th>
</tr></thead>
<tbody><tr>
@@ -252,7 +251,7 @@
</td>
<td valign="top">
<h4>
-<a name="id782098"></a>Types</h4>
+<a name="id782099"></a>Types</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/core/degree.html" title="degree">degree</a></td></tr>
<tr><td><a class="link" href="../reference/core/radian.html" title="radian">radian</a></td></tr>
@@ -331,18 +330,19 @@
<tr><td><a class="link" href="../reference/algorithms/equals.html" title="equals">equals</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/intersects.html" title="intersects">intersects</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/overlaps.html" title="overlaps">overlaps</a></td></tr>
+<tr><td><a class="link" href="../reference/algorithms/touches.html" title="touches">touches</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/within.html" title="within">within</a></td></tr>
</table>
</td>
<td valign="top">
<h4>
-<a name="id782505"></a>Append</h4>
+<a name="id782515"></a>Append</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/append.html" title="append">append</a></td></tr></table>
<h4>
-<a name="id782528"></a>Area</h4>
+<a name="id782538"></a>Area</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/area.html" title="area">area</a></td></tr></table>
<h4>
-<a name="id782551"></a>Assign</h4>
+<a name="id782561"></a>Assign</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/assign/assign.html" title="assign">assign</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/assign/assign_inverse.html" title="assign_inverse">assign_inverse</a></td></tr>
@@ -358,53 +358,53 @@
</td>
<td valign="top">
<h4>
-<a name="id782641"></a>Centroid</h4>
+<a name="id782652"></a>Centroid</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/centroid.html" title="centroid">centroid</a></td></tr></table>
<h4>
-<a name="id782664"></a>Clear</h4>
+<a name="id782674"></a>Clear</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/clear.html" title="clear">clear</a></td></tr></table>
<h4>
-<a name="id782687"></a>Convert</h4>
+<a name="id782697"></a>Convert</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/convert.html" title="convert">convert</a></td></tr></table>
<h4>
-<a name="id782709"></a>Convex Hull</h4>
+<a name="id782720"></a>Convex Hull</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/convex_hull.html" title="convex_hull">convex_hull</a></td></tr></table>
<h4>
-<a name="id782732"></a>Correct</h4>
+<a name="id782742"></a>Correct</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/correct.html" title="correct">correct</a></td></tr></table>
</td>
</tr>
<tr>
<td valign="top">
<h4>
-<a name="id782762"></a>Distance</h4>
+<a name="id782772"></a>Distance</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/distance.html" title="distance">distance</a></td></tr></table>
<h4>
-<a name="id782786"></a>Difference</h4>
+<a name="id782796"></a>Difference</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/difference.html" title="difference">difference</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/sym_difference.html" title="sym_difference">sym_difference</a></td></tr>
</table>
<h4>
-<a name="id782818"></a>Envelope</h4>
+<a name="id782828"></a>Envelope</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/envelope.html" title="envelope">envelope</a></td></tr></table>
<h4>
-<a name="id782840"></a>Expand</h4>
+<a name="id782850"></a>Expand</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/expand.html" title="expand">expand</a></td></tr></table>
<h4>
-<a name="id782862"></a>For Each</h4>
+<a name="id782873"></a>For Each</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/for_each.html" title="for_each">for each (point, segment)</a></td></tr></table>
<h4>
-<a name="id782885"></a>Intersection</h4>
+<a name="id782896"></a>Intersection</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/intersection.html" title="intersection">intersection</a></td></tr></table>
</td>
<td valign="top">
<h4>
-<a name="id782912"></a>Length</h4>
+<a name="id782922"></a>Length</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/length.html" title="length">length</a></td></tr></table>
<h4>
-<a name="id782937"></a>Num_ (counting)</h4>
+<a name="id782947"></a>Num_ (counting)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/num_interior_rings.html" title="num_interior_rings">num_interior_rings</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/num_geometries.html" title="num_geometries">num_geometries</a></td></tr>
@@ -413,24 +413,24 @@
<h4>
-<a name="id782982"></a>Perimeter</h4>
+<a name="id782992"></a>Perimeter</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/perimeter.html" title="perimeter">perimeter</a></td></tr></table>
<h4>
-<a name="id783005"></a>Reverse</h4>
+<a name="id783015"></a>Reverse</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/reverse.html" title="reverse">reverse</a></td></tr></table>
</td>
<td valign="top">
<h4>
-<a name="id783032"></a>Simplify</h4>
+<a name="id783042"></a>Simplify</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/simplify.html" title="simplify">simplify</a></td></tr></table>
<h4>
-<a name="id783055"></a>Transform</h4>
+<a name="id783065"></a>Transform</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/transform.html" title="transform">transform</a></td></tr></table>
<h4>
-<a name="id783078"></a>Union</h4>
+<a name="id783088"></a>Union</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/union_.html" title="union_">union</a></td></tr></table>
<h4>
-<a name="id783100"></a>Unique</h4>
+<a name="id783110"></a>Unique</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/unique.html" title="unique">unique</a></td></tr></table>
</td>
</tr>
@@ -444,13 +444,13 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id783156"></a>Strategies</h3>
+<a name="id783166"></a>Strategies</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id783173"></a>Area</h4>
+<a name="id783183"></a>Area</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_area_surveyor.html" title="strategy::area::surveyor">strategy::area::surveyor</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_area_huiller.html" title="strategy::area::huiller">strategy::area::huiller</a></td></tr>
@@ -458,7 +458,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783213"></a>Centroid</h4>
+<a name="id783223"></a>Centroid</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">strategy::centroid::bashein_detmer</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_centroid_average.html" title="strategy::centroid::average">strategy::centroid::centroid_average</a></td></tr>
@@ -469,7 +469,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id783256"></a>Distance</h4>
+<a name="id783266"></a>Distance</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_distance_projected_point.html" title="strategy::distance::projected_point">strategy::distance::projected_point</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">strategy::distance::pythagoras</a></td></tr>
@@ -479,7 +479,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783319"></a>Convex Hull</h4>
+<a name="id783329"></a>Convex Hull</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/strategies/strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">strategy::convex_hull::graham_andrew</a></td></tr></table>
</td>
<td class="auto-generated">&#160;</td>
@@ -487,7 +487,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id783353"></a>Side</h4>
+<a name="id783363"></a>Side</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_side_side_by_triangle.html" title="strategy::side::side_by_triangle">strategy::side::side_by_triangle</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_side_side_by_cross_track.html" title="strategy::side::side_by_cross_track">strategy::side::side_by_cross_track</a></td></tr>
@@ -496,7 +496,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783405"></a>Simplify</h4>
+<a name="id783416"></a>Simplify</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/strategies/strategy_simplify_douglas_peucker.html" title="strategy::simplify::douglas_peucker">strategy::simplify::douglas_peucker</a></td></tr></table>
</td>
<td class="auto-generated">&#160;</td>
@@ -504,7 +504,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id783437"></a>Transform</h4>
+<a name="id783447"></a>Transform</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_transform_inverse_transformer.html" title="strategy::transform::inverse_transformer">strategy::transform::inverse_transformer</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_transform_map_transformer.html" title="strategy::transform::map_transformer">strategy::transform::map_transformer</a></td></tr>
@@ -516,7 +516,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783524"></a>Within</h4>
+<a name="id783534"></a>Within</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_within_winding.html" title="strategy::within::winding">strategy::winding</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_within_crossings_multiply.html" title="strategy::within::crossings_multiply">strategy::crossings_multiply</a></td></tr>
@@ -536,13 +536,13 @@
</colgroup>
<thead><tr><th colspan="4" valign="center">
<h3>
-<a name="id783606"></a>Arithmetic</h3>
+<a name="id783616"></a>Arithmetic</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id783623"></a>Add</h4>
+<a name="id783633"></a>Add</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/add_point.html" title="add_point">add_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/add_value.html" title="add_value">add_value</a></td></tr>
@@ -550,7 +550,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783661"></a>Subtract</h4>
+<a name="id783671"></a>Subtract</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/subtract_point.html" title="subtract_point">subtract_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/subtract_value.html" title="subtract_value">subtract_value</a></td></tr>
@@ -558,7 +558,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783699"></a>Multiply</h4>
+<a name="id783709"></a>Multiply</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/multiply_point.html" title="multiply_point">multiply_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/multiply_value.html" title="multiply_value">multiply_value</a></td></tr>
@@ -566,7 +566,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783737"></a>Divide</h4>
+<a name="id783748"></a>Divide</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/divide_point.html" title="divide_point">divide_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/divide_value.html" title="divide_value">divide_value</a></td></tr>
@@ -575,7 +575,7 @@
</tr>
<tr><td colspan="4" valign="center">
<h4>
-<a name="id783782"></a>Products</h4>
+<a name="id783792"></a>Products</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/arithmetic/dot_product.html" title="dot_product">dot_product</a></td></tr></table>
</td></tr>
</tbody>
diff --git a/libs/geometry/doc/html/geometry/introduction.html b/libs/geometry/doc/html/geometry/introduction.html
index 45069ca488..45069ca488 100755..100644
--- a/libs/geometry/doc/html/geometry/introduction.html
+++ b/libs/geometry/doc/html/geometry/introduction.html
diff --git a/libs/geometry/doc/html/geometry/quickstart.html b/libs/geometry/doc/html/geometry/quickstart.html
index 951e7c49d7..951e7c49d7 100755..100644
--- a/libs/geometry/doc/html/geometry/quickstart.html
+++ b/libs/geometry/doc/html/geometry/quickstart.html
diff --git a/libs/geometry/doc/html/geometry/reference.html b/libs/geometry/doc/html/geometry/reference.html
index 80b44f19de..5aec4cfe81 100755..100644
--- a/libs/geometry/doc/html/geometry/reference.html
+++ b/libs/geometry/doc/html/geometry/reference.html
@@ -75,6 +75,7 @@
<dt><span class="section"><a href="reference/algorithms/reverse.html">reverse</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/simplify.html">simplify</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/sym_difference.html">sym_difference</a></span></dt>
+<dt><span class="section"><a href="reference/algorithms/touches.html">touches</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/transform.html">transform</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/union_.html">union_</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/unique.html">unique</a></span></dt>
diff --git a/libs/geometry/doc/html/geometry/reference/access.html b/libs/geometry/doc/html/geometry/reference/access.html
index 1df2cbf89d..1df2cbf89d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access.html
+++ b/libs/geometry/doc/html/geometry/reference/access.html
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
index 2b43013fdc..2b43013fdc 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
index 875b06d1e3..2bc09cb6ae 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.exterior_ring.exterior_ring_1"></a><a class="link" href="exterior_ring_1.html" title="exterior_ring">exterior_ring</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id790503"></a>
+ <a class="indexterm" name="id790513"></a>
Function to get the exterior_ring ring of a polygon.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
index c3ac27bf72..b85f125a71 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
@@ -28,7 +28,7 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id790972"></a>
+ <a class="indexterm" name="id790982"></a>
Function to get the exterior ring of a polygon (const version)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get.html b/libs/geometry/doc/html/geometry/reference/access/get.html
index f6a173605d..f6a173605d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/get.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get.html
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_2.html b/libs/geometry/doc/html/geometry/reference/access/get/get_2.html
index 51ff531147..eeea258259 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_2.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.get.get_2"></a><a class="link" href="get_2.html" title="get">get</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id783901"></a>
+ <a class="indexterm" name="id783911"></a>
Get coordinate value of a geometry (usually a point)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html b/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html
index f2dd27d40b..863ce77b31 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html
@@ -28,7 +28,7 @@
(with index)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id785077"></a>
+ <a class="indexterm" name="id785087"></a>
get coordinate value of a Box or Segment
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html b/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
index 499704f693..916291ac39 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.get.get_as_radian"></a><a class="link" href="get_as_radian.html" title="get_as_radian">get_as_radian</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id786797"></a>
+ <a class="indexterm" name="id786807"></a>
get coordinate value of a point, result is in Radian
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
index 0aed02da07..0aed02da07 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
index e3588a8a72..23efc24e70 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.interior_rings.interior_rings_1"></a><a class="link" href="interior_rings_1.html" title="interior_rings">interior_rings</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id791439"></a>
+ <a class="indexterm" name="id791449"></a>
Function to get the interior rings of a polygon (non const version)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
index f826d75c39..2151f0b05e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
@@ -28,7 +28,7 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id791879"></a>
+ <a class="indexterm" name="id791889"></a>
Function to get the interior rings of a polygon (const version)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set.html b/libs/geometry/doc/html/geometry/reference/access/set.html
index 05620b4c3a..05620b4c3a 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/set.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set.html
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_3.html b/libs/geometry/doc/html/geometry/reference/access/set/set_3.html
index 07ecfab87b..e03b18a432 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_3.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_3.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.set.set_3"></a><a class="link" href="set_3.html" title="set">set</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id787331"></a>
+ <a class="indexterm" name="id787341"></a>
Set coordinate value of a geometry (usually a point)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html b/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html
index 31f8fbbc58..7be18f4126 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html
@@ -28,7 +28,7 @@
(with index)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id788515"></a>
+ <a class="indexterm" name="id788525"></a>
set coordinate value of a Box / Segment
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html b/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
index 11951b7796..ddaf410249 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.access.set.set_from_radian"></a><a class="link" href="set_from_radian.html" title="set_from_radian">set_from_radian</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id789936"></a>
+ <a class="indexterm" name="id789946"></a>
set coordinate value (in radian) to a point
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted.html b/libs/geometry/doc/html/geometry/reference/adapted.html
index 147a4f3080..147a4f3080 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
index bc0919656d..bc0919656d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
index 2cec63fa70..2cec63fa70 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
index 03ea6f7c58..03ea6f7c58 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
index 379a4c2f89..379a4c2f89 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
index 8d08aebdad..8d08aebdad 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
index c85188492a..c85188492a 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
index 5d068309c7..5d068309c7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
index 58d823b0df..58d823b0df 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
index b1cf6b9dba..b1cf6b9dba 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
index d196367430..d196367430 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
index c0e441ff04..c0e441ff04 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
index f78c84c1c0..f78c84c1c0 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
index 997f1f1cb2..997f1f1cb2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/c_array.html b/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
index 4e7c7f3fab..4e7c7f3fab 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register.html b/libs/geometry/doc/html/geometry/reference/adapted/register.html
index 9814498c40..9814498c40 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register.html
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
index b8e050ee8a..ff1e2018da 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box"></a><a class="link" href="boost_geometry_register_box.html" title="BOOST_GEOMETRY_REGISTER_BOX">BOOST_GEOMETRY_REGISTER_BOX</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id804787"></a>
+ <a class="indexterm" name="id804797"></a>
Macro to register a box.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
index 59b53864f3..7c0c092083 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values"></a><a class="link" href="boost_geometry_register_box_2d_4values.html" title="BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id805860"></a>
+ <a class="indexterm" name="id805870"></a>
Macro to register a box.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
index f6b5cfdcc0..24a8adc9d8 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated"></a><a class="link" href="boost_geometry_register_box_templated.html" title="BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED">BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id807037"></a>
+ <a class="indexterm" name="id807048"></a>
Macro to register a box.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
index 74448786e7..848d45e957 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring"></a><a class="link" href="boost_geometry_register_linestring.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING">BOOST_GEOMETRY_REGISTER_LINESTRING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id808053"></a>
+ <a class="indexterm" name="id808063"></a>
Macro to register a linestring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
index 6c13f00a84..232caa16d4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated"></a><a class="link" href="boost_geometry_register_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED">BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id809110"></a>
+ <a class="indexterm" name="id809120"></a>
Macro to register a templated linestring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
index 00e540a3c7..b02997baf2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring"></a><a class="link" href="boost_geometry_register_multi_linestring.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING">BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id810156"></a>
+ <a class="indexterm" name="id810166"></a>
Macro to register a multi_linestring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
index db5fc900e9..6f28594e41 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated"></a><a class="link" href="boost_geometry_register_multi_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id811244"></a>
+ <a class="indexterm" name="id811254"></a>
Macro to register a templated multi_linestring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
index 16567dfe40..bba278a9f4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point"></a><a class="link" href="boost_geometry_register_multi_point.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT">BOOST_GEOMETRY_REGISTER_MULTI_POINT</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id811601"></a>
+ <a class="indexterm" name="id811611"></a>
Macro to register a multi_point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
index a061cc0c6d..d524946064 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated"></a><a class="link" href="boost_geometry_register_multi_point_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id812635"></a>
+ <a class="indexterm" name="id812646"></a>
Macro to register a templated multi_point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
index c8552b01f4..7cc4c5dcc9 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon"></a><a class="link" href="boost_geometry_register_multi_polygon.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON">BOOST_GEOMETRY_REGISTER_MULTI_POLYGON</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id813693"></a>
+ <a class="indexterm" name="id813704"></a>
Macro to register a multi_polygon.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
index a1753e68e8..af9326de48 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated"></a><a class="link" href="boost_geometry_register_multi_polygon_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id814778"></a>
+ <a class="indexterm" name="id814789"></a>
Macro to register a templated multi_polygon.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
index dab5636a07..934d98112d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d"></a><a class="link" href="boost_geometry_register_point_2d.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D">BOOST_GEOMETRY_REGISTER_POINT_2D</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id815130"></a>
+ <a class="indexterm" name="id815141"></a>
Macro to register a 2D point type.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
index d5ac2591ce..1850e12841 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const"></a><a class="link" href="boost_geometry_register_point_2d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_CONST">BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id816269"></a>
+ <a class="indexterm" name="id816280"></a>
Macro to register a 2D point type (const version)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
index 78dd3ca7d9..243a05c877 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set"></a><a class="link" href="boost_geometry_register_point_2d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET">BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id816689"></a>
+ <a class="indexterm" name="id816706"></a>
Macro to register a 2D point type (having separate get/set methods)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
index bbb0326e7c..d81350ddf8 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d"></a><a class="link" href="boost_geometry_register_point_3d.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D">BOOST_GEOMETRY_REGISTER_POINT_3D</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id817177"></a>
+ <a class="indexterm" name="id817194"></a>
Macro to register a 3D point type.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
index 036bb66bcf..8a390637fa 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const"></a><a class="link" href="boost_geometry_register_point_3d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_CONST">BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id817628"></a>
+ <a class="indexterm" name="id817645"></a>
Macro to register a 3D point type (const version)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
index 041a98ba6e..e2158c9dcb 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set"></a><a class="link" href="boost_geometry_register_point_3d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET">BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id818084"></a>
+ <a class="indexterm" name="id818100"></a>
Macro to register a 3D point type (having separate get/set methods)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
index 3a36182473..1456b6b175 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_ring"></a><a class="link" href="boost_geometry_register_ring.html" title="BOOST_GEOMETRY_REGISTER_RING">BOOST_GEOMETRY_REGISTER_RING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id818628"></a>
+ <a class="indexterm" name="id818645"></a>
Macro to register a ring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
index 0e03d34cbe..fda4116af3 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated"></a><a class="link" href="boost_geometry_register_ring_templated.html" title="BOOST_GEOMETRY_REGISTER_RING_TEMPLATED">BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id819752"></a>
+ <a class="indexterm" name="id819769"></a>
Macro to register a templated ring.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms.html b/libs/geometry/doc/html/geometry/reference/algorithms.html
index 8d62c9e84a..333784ffc8 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms.html
@@ -56,6 +56,7 @@
<dt><span class="section"><a href="algorithms/reverse.html">reverse</a></span></dt>
<dt><span class="section"><a href="algorithms/simplify.html">simplify</a></span></dt>
<dt><span class="section"><a href="algorithms/sym_difference.html">sym_difference</a></span></dt>
+<dt><span class="section"><a href="algorithms/touches.html">touches</a></span></dt>
<dt><span class="section"><a href="algorithms/transform.html">transform</a></span></dt>
<dt><span class="section"><a href="algorithms/union_.html">union_</a></span></dt>
<dt><span class="section"><a href="algorithms/unique.html">unique</a></span></dt>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/append.html b/libs/geometry/doc/html/geometry/reference/algorithms/append.html
index d183519d72..eb26694f01 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/append.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/append.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.append"></a><a class="link" href="append.html" title="append">append</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id833887"></a>
+ <a class="indexterm" name="id833904"></a>
Appends one or more points to a linestring, ring, polygon, multi-geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area.html b/libs/geometry/doc/html/geometry/reference/algorithms/area.html
index 5b21395548..5b21395548 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
index 94a84ad294..e713dd299b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.area.area_1"></a><a class="link" href="area_1.html" title="area">area</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id820929"></a>
+ <a class="indexterm" name="id820946"></a>
Calculates the area of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
index 39f7d0c7f7..022d40b6a6 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id823170"></a>
+ <a class="indexterm" name="id823186"></a>
Calculates the area of a geometry using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
index cd11a10135..cd11a10135 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
index e621ace13a..f049e4683e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.assign.assign"></a><a class="link" href="assign.html" title="assign">assign</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id825290"></a>
+ <a class="indexterm" name="id825306"></a>
Assigns one geometry to another geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
index 35a875c004..d9659bb643 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.assign.assign_inverse"></a><a class="link" href="assign_inverse.html" title="assign_inverse">assign_inverse</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id827018"></a>
+ <a class="indexterm" name="id827034"></a>
assign to a box inverse infinite
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
index a98715aa68..750e67c818 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.assign.assign_points"></a><a class="link" href="assign_points.html" title="assign_points">assign_points</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id828154"></a>
+ <a class="indexterm" name="id828171"></a>
Assign a range of points to a linestring, ring or polygon.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
index 6de3685c54..76c8fdd634 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
@@ -28,7 +28,7 @@
(2 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id830417"></a>
+ <a class="indexterm" name="id830433"></a>
Assign two coordinates to a geometry (usually a 2D point)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
index 3103f211c7..a18b713b2e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
@@ -28,7 +28,7 @@
(3 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id832413"></a>
+ <a class="indexterm" name="id832430"></a>
Assign three values to a geometry (usually a 3D point)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
index 9d96076fe2..806c867542 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
@@ -28,7 +28,7 @@
(4 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id831813"></a>
+ <a class="indexterm" name="id831830"></a>
Assign four values to a geometry (usually a box or segment)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
index 26d8a6a9ea..6e7c326adc 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.assign.assign_zero"></a><a class="link" href="assign_zero.html" title="assign_zero">assign_zero</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id833474"></a>
+ <a class="indexterm" name="id833491"></a>
assign zero values to a box, point
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
index 44ba2ebcb4..44ba2ebcb4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html
index 577f510ff2..3b1eec747a 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.buffer.buffer"></a><a class="link" href="buffer.html" title="buffer">buffer</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id836322"></a>
+ <a class="indexterm" name="id836339"></a>
Calculates the buffer of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
index 7a24beb184..2d269de099 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.buffer.return_buffer"></a><a class="link" href="return_buffer.html" title="return_buffer">return_buffer</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id837096"></a>
+ <a class="indexterm" name="id837113"></a>
Calculates the buffer of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
index 03e9db675b..03e9db675b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
index a170e59970..695caaa31e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.centroid.centroid_2"></a><a class="link" href="centroid_2.html" title="centroid">centroid</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id839502"></a>
+ <a class="indexterm" name="id839513"></a>
Calculates the centroid of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
index 5cb29bc341..0185b39b9b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id837801"></a>
+ <a class="indexterm" name="id837812"></a>
Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
index c4ae5b72f0..6d187bf146 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.centroid.return_centroid_1"></a><a class="link" href="return_centroid_1.html" title="return_centroid">return_centroid</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id841501"></a>
+ <a class="indexterm" name="id841512"></a>
Calculates the centroid of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
index 621782787a..04e764eeac 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id842809"></a>
+ <a class="indexterm" name="id842819"></a>
Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/clear.html b/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
index 14c2e3be6c..fdc81f31e1 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.clear"></a><a class="link" href="clear.html" title="clear">clear</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id844245"></a>
+ <a class="indexterm" name="id844256"></a>
Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/convert.html b/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
index e8cdcbd8c2..3f9e229972 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.convert"></a><a class="link" href="convert.html" title="convert">convert</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id846603"></a>
+ <a class="indexterm" name="id846614"></a>
Converts one geometry to another geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html b/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
index a0fcdacf76..70170ea1ce 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.convex_hull"></a><a class="link" href="convex_hull.html" title="convex_hull">convex_hull</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id850237"></a>
+ <a class="indexterm" name="id850247"></a>
Calculates the convex hull of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/correct.html b/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
index 13a97d18c9..95eea810bf 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.correct"></a><a class="link" href="correct.html" title="correct">correct</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id851914"></a>
+ <a class="indexterm" name="id851925"></a>
Corrects a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
index 479e55d09f..479e55d09f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
index 75c2cf0ba9..5852a2c2c4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.covered_by.covered_by_2"></a><a class="link" href="covered_by_2.html" title="covered_by">covered_by</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id853942"></a>
+ <a class="indexterm" name="id853953"></a>
Checks if the first geometry is inside or on border the second geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
index b911967f13..fec9e03568 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id856761"></a>
+ <a class="indexterm" name="id856772"></a>
Checks if the first geometry is inside or on border the second geometry
using the specified strategy.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/difference.html b/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
index e3ba1cf414..de7e206d93 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.difference"></a><a class="link" href="difference.html" title="difference">difference</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id859392"></a>
+ <a class="indexterm" name="id859402"></a>
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h0"></a>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html b/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
index 5a123cdd10..cc1886d98d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.disjoint"></a><a class="link" href="disjoint.html" title="disjoint">disjoint</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id861520"></a>
+ <a class="indexterm" name="id861531"></a>
Checks if two geometries are disjoint.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
index b44df16222..b44df16222 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html
index e1f3320916..f6f46cbaab 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.distance.comparable_distance"></a><a class="link" href="comparable_distance.html" title="comparable_distance">comparable_distance</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id862065"></a>
+ <a class="indexterm" name="id862076"></a>
Calculate the comparable distance measurement of two geometries.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
index ac82f735da..8097eb120b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.distance.distance_2"></a><a class="link" href="distance_2.html" title="distance">distance</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id863826"></a>
+ <a class="indexterm" name="id863837"></a>
Calculate the distance of two geometries.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
index 92bf527e08..4f387d9c03 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id867709"></a>
+ <a class="indexterm" name="id867720"></a>
Calculate the distance of two geometries using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
index 5142bdf432..5142bdf432 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
index aa5adafc6d..3b1e36a5d1 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.envelope.envelope"></a><a class="link" href="envelope.html" title="envelope">envelope</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id868494"></a>
+ <a class="indexterm" name="id868505"></a>
Calculates the envelope of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
index 5e1f8f2382..ef6ee7045a 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.envelope.return_envelope"></a><a class="link" href="return_envelope.html" title="return_envelope">return_envelope</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id869787"></a>
+ <a class="indexterm" name="id869798"></a>
Calculates the envelope of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/equals.html b/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
index 471fd3422b..a031b62c58 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.equals"></a><a class="link" href="equals.html" title="equals">equals</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id871310"></a>
+ <a class="indexterm" name="id871321"></a>
Checks if a geometry are spatially equal.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/expand.html b/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
index 2b2b5b8b6a..4365d73f75 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.expand"></a><a class="link" href="expand.html" title="expand">expand</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id874217"></a>
+ <a class="indexterm" name="id874228"></a>
Expands a box using the bounding box (envelope) of another geometry (box,
point)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
index baf8ec28d3..baf8ec28d3 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html
index 04cdff9489..c88f4bf5e7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.for_each.for_each_point_2"></a><a class="link" href="for_each_point_2.html" title="for_each_point">for_each_point</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id877057"></a>
+ <a class="indexterm" name="id877067"></a>
Applies function <span class="bold"><strong>f</strong></span> to each point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
index 5f2f20e585..e55af0f506 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
@@ -28,7 +28,7 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id875722"></a>
+ <a class="indexterm" name="id875733"></a>
Applies function <span class="bold"><strong>f</strong></span> to each point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html
index 77be1d833d..e30d4ead5b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.for_each.for_each_segment_2"></a><a class="link" href="for_each_segment_2.html" title="for_each_segment">for_each_segment</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id880666"></a>
+ <a class="indexterm" name="id880677"></a>
Applies function <span class="bold"><strong>f</strong></span> to each segment.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html
index 1f52fe8846..89c76c3dd2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html
@@ -28,7 +28,7 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id878802"></a>
+ <a class="indexterm" name="id878813"></a>
Applies function <span class="bold"><strong>f</strong></span> to each segment.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
index 18473f721c..3fbc43b2f2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.intersection"></a><a class="link" href="intersection.html" title="intersection">intersection</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id881148"></a>
+ <a class="indexterm" name="id881158"></a>
Calculate the intersection of two geometries.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
index 1d5c8b03bc..1d5c8b03bc 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
index c0c09c81be..20de43ffd7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
@@ -28,7 +28,7 @@
(one geometry)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id882853"></a>
+ <a class="indexterm" name="id882864"></a>
Checks if a geometry has at least one intersection (crossing or self-tangency)
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
index 994f69a940..e63b84ca0e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
@@ -28,7 +28,7 @@
(two geometries)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id884037"></a>
+ <a class="indexterm" name="id884048"></a>
Checks if two geometries have at least one intersection.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length.html b/libs/geometry/doc/html/geometry/reference/algorithms/length.html
index 89ca4381b7..89ca4381b7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
index 613b3f2be8..810c702612 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.length.length_1"></a><a class="link" href="length_1.html" title="length">length</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id885311"></a>
+ <a class="indexterm" name="id885322"></a>
Calculates the length of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
index b0e286d8b2..873fb5ba2d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id886501"></a>
+ <a class="indexterm" name="id886511"></a>
Calculates the length of a geometry using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make.html b/libs/geometry/doc/html/geometry/reference/algorithms/make.html
index 465872f4f5..465872f4f5 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
index 6576544034..8c6b05b9b4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
@@ -28,7 +28,7 @@
(2 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id887966"></a>
+ <a class="indexterm" name="id887977"></a>
Construct a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
index 302b17f1c5..bb2e061fc8 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
@@ -28,7 +28,7 @@
(3 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id889716"></a>
+ <a class="indexterm" name="id889726"></a>
Construct a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
index ab3f0c976c..698f384e07 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.make.make_inverse"></a><a class="link" href="make_inverse.html" title="make_inverse">make_inverse</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id890829"></a>
+ <a class="indexterm" name="id890840"></a>
Construct a box with inverse infinite coordinates.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
index 7e0c20409d..5799de91dc 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.make.make_zero"></a><a class="link" href="make_zero.html" title="make_zero">make_zero</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id892261"></a>
+ <a class="indexterm" name="id892272"></a>
Construct a geometry with its coordinates initialized to zero.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
index f9765f12b0..5e930fd5cd 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.num_geometries"></a><a class="link" href="num_geometries.html" title="num_geometries">num_geometries</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id892682"></a>
+ <a class="indexterm" name="id892693"></a>
Calculates the number of geometries of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
index 25dd1a2a7b..eb61714555 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.num_interior_rings"></a><a class="link" href="num_interior_rings.html" title="num_interior_rings">num_interior_rings</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id894046"></a>
+ <a class="indexterm" name="id894057"></a>
Calculates the number of interior rings of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
index 404f303109..99cd8b292c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.num_points"></a><a class="link" href="num_points.html" title="num_points">num_points</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id895442"></a>
+ <a class="indexterm" name="id895452"></a>
Calculates the number of points of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html b/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
index 97de87e027..497c832589 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.overlaps"></a><a class="link" href="overlaps.html" title="overlaps">overlaps</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id897017"></a>
+ <a class="indexterm" name="id897027"></a>
Checks if two geometries overlap.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
index 824690a559..824690a559 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
index dc32dd8a46..a660fa37ab 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.perimeter.perimeter_1"></a><a class="link" href="perimeter_1.html" title="perimeter">perimeter</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id897536"></a>
+ <a class="indexterm" name="id897547"></a>
Calculates the perimeter of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
index 35682d9607..1fb3c34ab1 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id898199"></a>
+ <a class="indexterm" name="id898209"></a>
Calculates the perimeter of a geometry using the specified strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
index f91305ab6e..941678d452 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.reverse"></a><a class="link" href="reverse.html" title="reverse">reverse</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id898948"></a>
+ <a class="indexterm" name="id898958"></a>
Reverses the points within a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
index 5fad2fbccd..5fad2fbccd 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
index d847e8fc65..2c4e503b08 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.simplify.simplify_3"></a><a class="link" href="simplify_3.html" title="simplify">simplify</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id901816"></a>
+ <a class="indexterm" name="id901827"></a>
Simplify a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
index a5659ce0e3..548dad69c5 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id901210"></a>
+ <a class="indexterm" name="id901221"></a>
Simplify a geometry using a specified strategy.
</p>
<h6>
@@ -38,7 +38,7 @@ Simplify a geometry using a specified strategy.
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Distance</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">simplify</span><span class="special">(</span><span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">max_distance</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">simplify</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">max_distance</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
<p>
</p>
<h6>
@@ -78,30 +78,29 @@ Simplify a geometry using a specified strategy.
<tr>
<td>
<p>
- Strategy const &amp;
+ Geometry const &amp;
</p>
</td>
<td>
<p>
- A type fulfilling a SimplifyStrategy concept
+ Any type fulfilling a Geometry Concept
</p>
</td>
<td>
<p>
- strategy
+ geometry
</p>
</td>
<td>
<p>
- simplify strategy to be used for simplification, might include
- point-distance strategy
+ input geometry, to be simplified
</p>
</td>
</tr>
<tr>
<td>
<p>
- Geometry const &amp;
+ Geometry &amp;
</p>
</td>
<td>
@@ -111,57 +110,58 @@ Simplify a geometry using a specified strategy.
</td>
<td>
<p>
- geometry
+ out
</p>
</td>
<td>
<p>
- input geometry, to be simplified
+ output geometry, simplified version of the input geometry
</p>
</td>
</tr>
<tr>
<td>
<p>
- Geometry &amp;
+ Distance const &amp;
</p>
</td>
<td>
<p>
- Any type fulfilling a Geometry Concept
+ A numerical distance measure
</p>
</td>
<td>
<p>
- out
+ max_distance
</p>
</td>
<td>
<p>
- output geometry, simplified version of the input geometry
+ distance (in units of input coordinates) of a vertex to other
+ segments to be removed
</p>
</td>
</tr>
<tr>
<td>
<p>
- Distance const &amp;
+ Strategy const &amp;
</p>
</td>
<td>
<p>
- A numerical distance measure
+ A type fulfilling a SimplifyStrategy concept
</p>
</td>
<td>
<p>
- max_distance
+ strategy
</p>
</td>
<td>
<p>
- distance (in units of input coordinates) of a vertex to other
- segments to be removed
+ simplify strategy to be used for simplification, might include
+ point-distance strategy
</p>
</td>
</tr>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html b/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
index af8e51a99d..db70ec6a86 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
@@ -7,7 +7,7 @@
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="simplify/simplify_3.html" title="simplify">
-<link rel="next" href="transform.html" title="transform">
+<link rel="next" href="touches.html" title="touches">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,14 +20,14 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="simplify/simplify_3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="simplify/simplify_3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.sym_difference"></a><a class="link" href="sym_difference.html" title="sym_difference">sym_difference</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id903442"></a>
+ <a class="indexterm" name="id903453"></a>
Calculate the symmetric difference of two geometries.
</p>
<h6>
@@ -371,7 +371,7 @@ total: 3.1459
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="simplify/simplify_3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="simplify/simplify_3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches.html
new file mode 100644
index 0000000000..83d6fcb0ec
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>touches</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../algorithms.html" title="Algorithms">
+<link rel="prev" href="sym_difference.html" title="sym_difference">
+<link rel="next" href="touches/touches_1_one_geometry.html" title="touches (one geometry)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sym_difference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches/touches_1_one_geometry.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.algorithms.touches"></a><a class="link" href="touches.html" title="touches">touches</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="touches/touches_1_one_geometry.html">touches
+ (one geometry)</a></span></dt>
+<dt><span class="section"><a href="touches/touches_2_two_geometries.html">touches
+ (two geometries)</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
+ Gehrels, Bruno Lalande, Mateusz Loskot<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sym_difference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches/touches_1_one_geometry.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html
new file mode 100644
index 0000000000..ab0cfe24f5
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html
@@ -0,0 +1,159 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>touches (one geometry)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../touches.html" title="touches">
+<link rel="prev" href="../touches.html" title="touches">
+<link rel="next" href="touches_2_two_geometries.html" title="touches (two geometries)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../touches.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../touches.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches_2_two_geometries.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry"></a><a class="link" href="touches_1_one_geometry.html" title="touches (one geometry)">touches
+ (one geometry)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="id905412"></a>
+Checks if a geometry has at least one touching point (self-tangency)
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h0"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">touches</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h1"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.parameters"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Geometry const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h2"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.returns"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.returns">Returns</a>
+ </h6>
+<p>
+ Returns true if the geometry is self-touching
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h3"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.header"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">touches</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h4"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.conformance"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.conformance">Conformance</a>
+ </h6>
+<p>
+ The function touches implements function Touches from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<p>
+ The version with one parameter is additional and not described in the
+ OGC standard
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ only implemented for polygon/multi_polygon
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
+ Gehrels, Bruno Lalande, Mateusz Loskot<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../touches.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../touches.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="touches_2_two_geometries.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html
new file mode 100644
index 0000000000..b653fc0041
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html
@@ -0,0 +1,184 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>touches (two geometries)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../touches.html" title="touches">
+<link rel="prev" href="touches_1_one_geometry.html" title="touches (one geometry)">
+<link rel="next" href="../transform.html" title="transform">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="touches_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../touches.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../transform.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries"></a><a class="link" href="touches_2_two_geometries.html" title="touches (two geometries)">touches
+ (two geometries)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="id905891"></a>
+Checks if two geometries have at least one touching point (tangent -
+ non overlapping)
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h0"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">touches</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h1"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.parameters"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometry1 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry1
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Geometry2 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry2
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h2"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.returns"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.returns">Returns</a>
+ </h6>
+<p>
+ Returns true if two geometries touch each other
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h3"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.header"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">touches</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h4"></a>
+ <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.conformance"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.conformance">Conformance</a>
+ </h6>
+<p>
+ The function touches implements function Touches from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<p>
+ The version with one parameter is additional and not described in the
+ OGC standard
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ only implemented for polygon/multi_polygon
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
+ Gehrels, Bruno Lalande, Mateusz Loskot<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="touches_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../touches.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../transform.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
index 696e798ed9..a7549da4cb 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
-<link rel="prev" href="sym_difference.html" title="sym_difference">
+<link rel="prev" href="touches/touches_2_two_geometries.html" title="touches (two geometries)">
<link rel="next" href="transform/transform_3_with_strategy.html" title="transform (with strategy)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="sym_difference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform/transform_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="touches/touches_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform/transform_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
@@ -43,7 +43,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="sym_difference.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform/transform_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="touches/touches_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="transform/transform_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
index 1ed654b6af..83361d9465 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.transform.transform_2"></a><a class="link" href="transform_2.html" title="transform">transform</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id907059"></a>
+ <a class="indexterm" name="id908122"></a>
Transforms from one geometry to another geometry using a strategy.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
index 5760df921c..68e1193888 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id905404"></a>
+ <a class="indexterm" name="id906467"></a>
Transforms from one geometry to another geometry using the specified
strategy.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/union_.html b/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
index 0221c042f1..a874f98c31 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.union_"></a><a class="link" href="union_.html" title="union_">union_</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id908854"></a>
+ <a class="indexterm" name="id909918"></a>
Combines two geometries which each other.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/unique.html b/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
index afe20ad21a..cffc69deb7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.unique"></a><a class="link" href="unique.html" title="unique">unique</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id910597"></a>
+ <a class="indexterm" name="id911661"></a>
Calculates the minimal set of a geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within.html b/libs/geometry/doc/html/geometry/reference/algorithms/within.html
index 4e3d583980..4e3d583980 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within.html
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
index 68bf5fad24..71b0f31601 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.algorithms.within.within_2"></a><a class="link" href="within_2.html" title="within">within</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id911859"></a>
+ <a class="indexterm" name="id912923"></a>
Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
index 375dab4a8a..2cf5766516 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
@@ -28,7 +28,7 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id915146"></a>
+ <a class="indexterm" name="id916209"></a>
Checks if the first geometry is completely inside the second geometry
using the specified strategy.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic.html b/libs/geometry/doc/html/geometry/reference/arithmetic.html
index cd53f1dc3d..cd53f1dc3d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic.html
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
index eda57dd5a8..fe3787beed 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.add_point"></a><a class="link" href="add_point.html" title="add_point">add_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id917921"></a>
+ <a class="indexterm" name="id918992"></a>
Adds a point to another.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
index 92986aec7f..4a25e6d39d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.add_value"></a><a class="link" href="add_value.html" title="add_value">add_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id918396"></a>
+ <a class="indexterm" name="id919467"></a>
Adds the same value to each coordinate of a point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
index 229794aad4..cc93431d33 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.assign_point"></a><a class="link" href="assign_point.html" title="assign_point">assign_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id918850"></a>
+ <a class="indexterm" name="id919921"></a>
Assign a point with another.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
index a6f5874413..bc998762a0 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.assign_value"></a><a class="link" href="assign_value.html" title="assign_value">assign_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id919354"></a>
+ <a class="indexterm" name="id920425"></a>
Assign each coordinate of a point the same value.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
index ca45b295a2..077e03e1da 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.divide_point"></a><a class="link" href="divide_point.html" title="divide_point">divide_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id919806"></a>
+ <a class="indexterm" name="id920877"></a>
Divides a point by another.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
index 065ab8386d..a376669b2c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.divide_value"></a><a class="link" href="divide_value.html" title="divide_value">divide_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id920284"></a>
+ <a class="indexterm" name="id921355"></a>
Divides each coordinate of the same point by a value.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html b/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
index 544cf9cf2c..a7480fa18c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.dot_product"></a><a class="link" href="dot_product.html" title="dot_product">dot_product</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id920736"></a>
+ <a class="indexterm" name="id921807"></a>
Computes the dot product (or scalar product) of 2 vectors (points).
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
index 1ae49a0202..8a18ba855d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.multiply_point"></a><a class="link" href="multiply_point.html" title="multiply_point">multiply_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id921241"></a>
+ <a class="indexterm" name="id922312"></a>
Multiplies a point by another.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
index 513d5800c7..c56673800f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.multiply_value"></a><a class="link" href="multiply_value.html" title="multiply_value">multiply_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id921717"></a>
+ <a class="indexterm" name="id922788"></a>
Multiplies each coordinate of a point by the same value.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
index c1f36a6ad8..5a834652ec 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.subtract_point"></a><a class="link" href="subtract_point.html" title="subtract_point">subtract_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id922172"></a>
+ <a class="indexterm" name="id923243"></a>
Subtracts a point to another.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
index 43c2aaa777..a73f26d5d6 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.arithmetic.subtract_value"></a><a class="link" href="subtract_value.html" title="subtract_value">subtract_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id922648"></a>
+ <a class="indexterm" name="id923719"></a>
Subtracts the same value to each coordinate of a point.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts.html b/libs/geometry/doc/html/geometry/reference/concepts.html
index 219e3a80e4..219e3a80e4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
index 39a535f068..39a535f068 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
index 2ef714e4a7..2ef714e4a7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
index 7e959ffd29..7e959ffd29 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
index b1e14752f0..b1e14752f0 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
index 2c21f93ad7..2c21f93ad7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
index a1b0731f56..a1b0731f56 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
index 7cb3b5ade2..7cb3b5ade2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
index 990999c50e..990999c50e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
index 97abe3c3d7..97abe3c3d7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
diff --git a/libs/geometry/doc/html/geometry/reference/constants.html b/libs/geometry/doc/html/geometry/reference/constants.html
index 4cdb97408c..4cdb97408c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/constants.html
+++ b/libs/geometry/doc/html/geometry/reference/constants.html
diff --git a/libs/geometry/doc/html/geometry/reference/constants/max_corner.html b/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
index d4c3dc66f4..d4c3dc66f4 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
+++ b/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
diff --git a/libs/geometry/doc/html/geometry/reference/constants/min_corner.html b/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
index a65c1204db..a65c1204db 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
+++ b/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
diff --git a/libs/geometry/doc/html/geometry/reference/core.html b/libs/geometry/doc/html/geometry/reference/core.html
index dfc4537867..dfc4537867 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core.html
+++ b/libs/geometry/doc/html/geometry/reference/core.html
diff --git a/libs/geometry/doc/html/geometry/reference/core/closure.html b/libs/geometry/doc/html/geometry/reference/core/closure.html
index 656a12652a..8d343c8b2c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/closure.html
+++ b/libs/geometry/doc/html/geometry/reference/core/closure.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.closure"></a><a class="link" href="closure.html" title="closure">closure</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id930247"></a>
+ <a class="indexterm" name="id931319"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the closure
(clockwise, counterclockwise) of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html b/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
index 573a83bb7c..9cc3d6e426 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
+++ b/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.coordinate_system"></a><a class="link" href="coordinate_system.html" title="coordinate_system">coordinate_system</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id931254"></a>
+ <a class="indexterm" name="id932326"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the coordinate
system (cartesian, spherical, etc) of the point type making up the specified
geometry type.
diff --git a/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html b/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
index 688d3fe71c..ec0da50bd7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.coordinate_type"></a><a class="link" href="coordinate_type.html" title="coordinate_type">coordinate_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id932122"></a>
+ <a class="indexterm" name="id933194"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the coordinate
type (int, float, double, etc) of the point type making up the specified
geometry type.
diff --git a/libs/geometry/doc/html/geometry/reference/core/cs_tag.html b/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
index e99c57bb1d..0b23a6b633 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
+++ b/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.cs_tag"></a><a class="link" href="cs_tag.html" title="cs_tag">cs_tag</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id932988"></a>
+ <a class="indexterm" name="id934060"></a>
Meta-function returning coordinate system tag (cs family) of any geometry.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/core/degree.html b/libs/geometry/doc/html/geometry/reference/core/degree.html
index 310bc48431..487aa81e85 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/degree.html
+++ b/libs/geometry/doc/html/geometry/reference/core/degree.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.degree"></a><a class="link" href="degree.html" title="degree">degree</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id933306"></a>
+ <a class="indexterm" name="id934378"></a>
Unit of plane angle: Degrees.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/core/dimension.html b/libs/geometry/doc/html/geometry/reference/core/dimension.html
index 8ee03962da..c69861e551 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/dimension.html
+++ b/libs/geometry/doc/html/geometry/reference/core/dimension.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.dimension"></a><a class="link" href="dimension.html" title="dimension">dimension</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id934094"></a>
+ <a class="indexterm" name="id935166"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the number
of coordinates (the number of axes of any geometry) of the point type making
up the specified geometry type.
diff --git a/libs/geometry/doc/html/geometry/reference/core/interior_type.html b/libs/geometry/doc/html/geometry/reference/core/interior_type.html
index 0b1df4b003..c857f0646a 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/interior_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/interior_type.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.interior_type"></a><a class="link" href="interior_type.html" title="interior_type">interior_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id934831"></a>
+ <a class="indexterm" name="id935903"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the interior_type
(container type of inner rings) of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/is_radian.html b/libs/geometry/doc/html/geometry/reference/core/is_radian.html
index 9237c12481..e6a57a9e9f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/is_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/core/is_radian.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.is_radian"></a><a class="link" href="is_radian.html" title="is_radian">is_radian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id935730"></a>
+ <a class="indexterm" name="id936802"></a>
Meta-function to verify if a coordinate system is radian.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/core/point_order.html b/libs/geometry/doc/html/geometry/reference/core/point_order.html
index d8c1a8ddd1..63de9c2df6 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/point_order.html
+++ b/libs/geometry/doc/html/geometry/reference/core/point_order.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.point_order"></a><a class="link" href="point_order.html" title="point_order">point_order</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id936053"></a>
+ <a class="indexterm" name="id937120"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the point
order (clockwise, counterclockwise) of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/point_type.html b/libs/geometry/doc/html/geometry/reference/core/point_type.html
index 3055bc8261..3f81a436a2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/point_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/point_type.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.point_type"></a><a class="link" href="point_type.html" title="point_type">point_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id937067"></a>
+ <a class="indexterm" name="id938134"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the point_type
of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/radian.html b/libs/geometry/doc/html/geometry/reference/core/radian.html
index d97fd0c217..9eb56f02a6 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/radian.html
+++ b/libs/geometry/doc/html/geometry/reference/core/radian.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.radian"></a><a class="link" href="radian.html" title="radian">radian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id938054"></a>
+ <a class="indexterm" name="id939122"></a>
Unit of plane angle: Radians.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/core/ring_type.html b/libs/geometry/doc/html/geometry/reference/core/ring_type.html
index f2920dfce1..8bd2a538b9 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/ring_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/ring_type.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.ring_type"></a><a class="link" href="ring_type.html" title="ring_type">ring_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id938932"></a>
+ <a class="indexterm" name="id940000"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the ring_type
of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/tag.html b/libs/geometry/doc/html/geometry/reference/core/tag.html
index 681080ab68..1efbd5f97d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/tag.html
+++ b/libs/geometry/doc/html/geometry/reference/core/tag.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.tag"></a><a class="link" href="tag.html" title="tag">tag</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id940123"></a>
+ <a class="indexterm" name="id941190"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
of the specified geometry type.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/tag_cast.html b/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
index 53151850cb..7bb20d8437 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
+++ b/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.core.tag_cast"></a><a class="link" href="tag_cast.html" title="tag_cast">tag_cast</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id942537"></a>
+ <a class="indexterm" name="id943876"></a>
Metafunction defining a type being either the specified tag, or one of
the specified basetags if the type inherits from them.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs.html b/libs/geometry/doc/html/geometry/reference/cs.html
index 8918259d24..8918259d24 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/cs.html
+++ b/libs/geometry/doc/html/geometry/reference/cs.html
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html b/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
index 012e81975a..573f26386e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.cs.cs_cartesian"></a><a class="link" href="cs_cartesian.html" title="cs::cartesian">cs::cartesian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id928797"></a><a class="indexterm" name="id928802"></a>
+ <a class="indexterm" name="id929869"></a><a class="indexterm" name="id929873"></a>
Cartesian coordinate system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html b/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
index 453ac34f08..f262369dc7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.cs.cs_geographic"></a><a class="link" href="cs_geographic.html" title="cs::geographic">cs::geographic</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id929851"></a><a class="indexterm" name="id929856"></a>
+ <a class="indexterm" name="id930922"></a><a class="indexterm" name="id930927"></a>
Geographic coordinate system, in degree or in radian.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
index ad023e24e5..4f87f1a1c7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.cs.cs_spherical"></a><a class="link" href="cs_spherical.html" title="cs::spherical">cs::spherical</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id929078"></a><a class="indexterm" name="id929083"></a>
+ <a class="indexterm" name="id930150"></a><a class="indexterm" name="id930154"></a>
Spherical (polar) coordinate system, in degree or in radian.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
index a8af80bfbf..aee25ed6b9 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.cs.cs_spherical_equatorial"></a><a class="link" href="cs_spherical_equatorial.html" title="cs::spherical_equatorial">cs::spherical_equatorial</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id929461"></a><a class="indexterm" name="id929465"></a>
+ <a class="indexterm" name="id930532"></a><a class="indexterm" name="id930537"></a>
Spherical equatorial coordinate system, in degree or in radian.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations.html b/libs/geometry/doc/html/geometry/reference/enumerations.html
index a47d3d2370..a47d3d2370 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations.html
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
index d1d1a2df6a..5013f7638f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
@@ -27,10 +27,10 @@
<a name="geometry.reference.enumerations.closure_selector"></a><a class="link" href="closure_selector.html" title="closure_selector">closure_selector</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id944250"></a>
-<a class="indexterm" name="id944257"></a>
-<a class="indexterm" name="id944264"></a>
-<a class="indexterm" name="id944271"></a>
+ <a class="indexterm" name="id945323"></a>
+<a class="indexterm" name="id945330"></a>
+<a class="indexterm" name="id945337"></a>
+<a class="indexterm" name="id945344"></a>
Enumerates options for defining if polygons are open or closed.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
index 4d49861613..997682335e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
@@ -27,10 +27,10 @@
<a name="geometry.reference.enumerations.order_selector"></a><a class="link" href="order_selector.html" title="order_selector">order_selector</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id944695"></a>
-<a class="indexterm" name="id944701"></a>
-<a class="indexterm" name="id944708"></a>
-<a class="indexterm" name="id944715"></a>
+ <a class="indexterm" name="id945768"></a>
+<a class="indexterm" name="id945774"></a>
+<a class="indexterm" name="id945781"></a>
+<a class="indexterm" name="id945788"></a>
Enumerates options for the order of points within polygons.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions.html b/libs/geometry/doc/html/geometry/reference/exceptions.html
index 69c481f852..69c481f852 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions.html
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html b/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
index 6530dba504..4b7a7a7869 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.exceptions.centroid_exception"></a><a class="link" href="centroid_exception.html" title="centroid_exception">centroid_exception</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id945381"></a>
+ <a class="indexterm" name="id946454"></a>
Centroid Exception.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions/exception.html b/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
index 35614e01ad..8bfb4c9e2b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.exceptions.exception"></a><a class="link" href="exception.html" title="exception">exception</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id945148"></a>
+ <a class="indexterm" name="id946220"></a>
Base exception class for Boost.Geometry algorithms.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/iterators.html b/libs/geometry/doc/html/geometry/reference/iterators.html
index f877d063ec..f877d063ec 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/iterators.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators.html
diff --git a/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html b/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
index 63066c2a5b..e4c84cbd37 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.iterators.closing_iterator"></a><a class="link" href="closing_iterator.html" title="closing_iterator">closing_iterator</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id945952"></a>
+ <a class="indexterm" name="id947025"></a>
Iterator which iterates through a range, but adds first element at end
of the range.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html b/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
index 9a6fb59fb4..480376ce16 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.iterators.ever_circling_iterator"></a><a class="link" href="ever_circling_iterator.html" title="ever_circling_iterator">ever_circling_iterator</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id946691"></a>
+ <a class="indexterm" name="id947764"></a>
Iterator which ever circles through a range.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models.html b/libs/geometry/doc/html/geometry/reference/models.html
index fe0d06cef3..fe0d06cef3 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models.html
+++ b/libs/geometry/doc/html/geometry/reference/models.html
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_box.html b/libs/geometry/doc/html/geometry/reference/models/model_box.html
index 29b2b1ecb2..01aeb278d2 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_box.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_box.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_box"></a><a class="link" href="model_box.html" title="model::box">model::box</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id954068"></a><a class="indexterm" name="id954072"></a>
+ <a class="indexterm" name="id955141"></a><a class="indexterm" name="id955146"></a>
Class box: defines a box made of two describing points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html b/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
index f6d6a715b5..7bad9582d7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_d2_point_xy"></a><a class="link" href="model_d2_point_xy.html" title="model::d2::point_xy">model::d2::point_xy</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id949417"></a><a class="indexterm" name="id949422"></a><a class="indexterm" name="id949428"></a>
+ <a class="indexterm" name="id950490"></a><a class="indexterm" name="id950495"></a><a class="indexterm" name="id950500"></a>
2D point in Cartesian coordinate system
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_linestring.html b/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
index f5c0715e00..edea36c20d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_linestring"></a><a class="link" href="model_linestring.html" title="model::linestring">model::linestring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id950484"></a><a class="indexterm" name="id950489"></a>
+ <a class="indexterm" name="id951557"></a><a class="indexterm" name="id951562"></a>
A linestring (named so by OGC) is a collection (default a vector) of points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
index d14f9d2ae8..341bdd8e4c 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_multi_linestring"></a><a class="link" href="model_multi_linestring.html" title="model::multi_linestring">model::multi_linestring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id953041"></a><a class="indexterm" name="id953047"></a>
+ <a class="indexterm" name="id954115"></a><a class="indexterm" name="id954120"></a>
multi_line, a collection of linestring
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
index 1f5c12fa83..7020d560ba 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_multi_point"></a><a class="link" href="model_multi_point.html" title="model::multi_point">model::multi_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id952329"></a><a class="indexterm" name="id952334"></a>
+ <a class="indexterm" name="id953403"></a><a class="indexterm" name="id953408"></a>
multi_point, a collection of points
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
index 143cdbcb8f..4484974521 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_multi_polygon"></a><a class="link" href="model_multi_polygon.html" title="model::multi_polygon">model::multi_polygon</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id953556"></a><a class="indexterm" name="id953561"></a>
+ <a class="indexterm" name="id954630"></a><a class="indexterm" name="id954634"></a>
multi_polygon, a collection of polygons
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_point.html b/libs/geometry/doc/html/geometry/reference/models/model_point.html
index 771087f7f9..7418047236 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_point.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_point"></a><a class="link" href="model_point.html" title="model::point">model::point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id947479"></a><a class="indexterm" name="id947484"></a>
+ <a class="indexterm" name="id948552"></a><a class="indexterm" name="id948557"></a>
Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_polygon.html b/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
index 6a0274febe..8bd82887e8 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_polygon"></a><a class="link" href="model_polygon.html" title="model::polygon">model::polygon</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id951257"></a><a class="indexterm" name="id951262"></a>
+ <a class="indexterm" name="id952331"></a><a class="indexterm" name="id952336"></a>
The polygon contains an outer ring and zero or more inner rings.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html b/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
index e49d1958f3..ef8d786b26 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_referring_segment"></a><a class="link" href="model_referring_segment.html" title="model::referring_segment">model::referring_segment</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id956380"></a><a class="indexterm" name="id956386"></a>
+ <a class="indexterm" name="id957453"></a><a class="indexterm" name="id957459"></a>
Class segment: small class containing two (templatized) point references.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_ring.html b/libs/geometry/doc/html/geometry/reference/models/model_ring.html
index 763e45369e..45c571fb80 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_ring.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_ring"></a><a class="link" href="model_ring.html" title="model::ring">model::ring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id954929"></a><a class="indexterm" name="id954934"></a>
+ <a class="indexterm" name="id956002"></a><a class="indexterm" name="id956007"></a>
A ring (aka linear ring) is a closed line which should not be selfintersecting.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_segment.html b/libs/geometry/doc/html/geometry/reference/models/model_segment.html
index 3ba0a38217..c255656a0b 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_segment.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.models.model_segment"></a><a class="link" href="model_segment.html" title="model::segment">model::segment</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id955782"></a><a class="indexterm" name="id955786"></a>
+ <a class="indexterm" name="id956855"></a><a class="indexterm" name="id956860"></a>
Class segment: small class containing two points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies.html b/libs/geometry/doc/html/geometry/reference/strategies.html
index b75fe31dcf..b75fe31dcf 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies.html
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
index 371218eb04..081327ba77 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_area_huiller"></a><a class="link" href="strategy_area_huiller.html" title="strategy::area::huiller">strategy::area::huiller</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id961404"></a><a class="indexterm" name="id961409"></a><a class="indexterm" name="id961415"></a>
+ <a class="indexterm" name="id962477"></a><a class="indexterm" name="id962483"></a><a class="indexterm" name="id962488"></a>
Area calculation by spherical excess / Huiller's formula.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
index ae2d099a8d..6b28549629 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_area_surveyor"></a><a class="link" href="strategy_area_surveyor.html" title="strategy::area::surveyor">strategy::area::surveyor</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id960374"></a><a class="indexterm" name="id960380"></a><a class="indexterm" name="id960386"></a>
+ <a class="indexterm" name="id961719"></a><a class="indexterm" name="id961724"></a><a class="indexterm" name="id961730"></a>
Area calculation for cartesian points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
index 01b4d135e9..bd1496dd90 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_centroid_average"></a><a class="link" href="strategy_centroid_average.html" title="strategy::centroid::average">strategy::centroid::average</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id963175"></a><a class="indexterm" name="id963181"></a><a class="indexterm" name="id963186"></a>
+ <a class="indexterm" name="id964248"></a><a class="indexterm" name="id964254"></a><a class="indexterm" name="id964260"></a>
Centroid calculation taking average of points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
index 9970523ce6..26342fb365 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer"></a><a class="link" href="strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">strategy::centroid::bashein_detmer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id963915"></a><a class="indexterm" name="id963921"></a><a class="indexterm" name="id963926"></a>
+ <a class="indexterm" name="id964989"></a><a class="indexterm" name="id964994"></a><a class="indexterm" name="id965000"></a>
Centroid calculation using algorith Bashein / Detmer.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
index 5a258fb02d..6cabf394c1 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew"></a><a class="link" href="strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">strategy::convex_hull::graham_andrew</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id964750"></a><a class="indexterm" name="id964755"></a><a class="indexterm" name="id964761"></a>
+ <a class="indexterm" name="id965823"></a><a class="indexterm" name="id965829"></a><a class="indexterm" name="id965834"></a>
Graham scan strategy to calculate convex hull.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
index 6173d43c8f..d81f41d478 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_distance_cross_track"></a><a class="link" href="strategy_distance_cross_track.html" title="strategy::distance::cross_track">strategy::distance::cross_track</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id959329"></a><a class="indexterm" name="id959334"></a><a class="indexterm" name="id959340"></a>
+ <a class="indexterm" name="id960402"></a><a class="indexterm" name="id960408"></a><a class="indexterm" name="id960413"></a>
Strategy functor for distance point to segment calculation.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
index 7b1e76783b..a1136aad13 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_distance_haversine"></a><a class="link" href="strategy_distance_haversine.html" title="strategy::distance::haversine">strategy::distance::haversine</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id957675"></a><a class="indexterm" name="id957681"></a><a class="indexterm" name="id957686"></a>
+ <a class="indexterm" name="id958748"></a><a class="indexterm" name="id958754"></a><a class="indexterm" name="id958760"></a>
Distance calculation for spherical coordinates on a perfect sphere using
haversine.
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
index f466ef3221..abf7a52b18 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_distance_projected_point"></a><a class="link" href="strategy_distance_projected_point.html" title="strategy::distance::projected_point">strategy::distance::projected_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id958550"></a><a class="indexterm" name="id958555"></a><a class="indexterm" name="id958561"></a>
+ <a class="indexterm" name="id959623"></a><a class="indexterm" name="id959629"></a><a class="indexterm" name="id959634"></a>
Strategy for distance point to segment.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
index 792267d16a..92c8c8167f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_distance_pythagoras"></a><a class="link" href="strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">strategy::distance::pythagoras</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id956968"></a><a class="indexterm" name="id956974"></a><a class="indexterm" name="id956979"></a>
+ <a class="indexterm" name="id958041"></a><a class="indexterm" name="id958047"></a><a class="indexterm" name="id958053"></a>
Strategy to calculate the distance between two points.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
index bcb03df79b..263995d708 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track"></a><a class="link" href="strategy_side_side_by_cross_track.html" title="strategy::side::side_by_cross_track">strategy::side::side_by_cross_track</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id966077"></a><a class="indexterm" name="id966083"></a><a class="indexterm" name="id966089"></a>
+ <a class="indexterm" name="id967151"></a><a class="indexterm" name="id967156"></a><a class="indexterm" name="id967162"></a>
Check at which side of a Great Circle segment a point lies left of segment
(&gt; 0), right of segment (&lt; 0), on segment (0)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
index 822a23ead7..38ffac32bd 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_side_side_by_triangle"></a><a class="link" href="strategy_side_side_by_triangle.html" title="strategy::side::side_by_triangle">strategy::side::side_by_triangle</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id965444"></a><a class="indexterm" name="id965449"></a><a class="indexterm" name="id965455"></a>
+ <a class="indexterm" name="id966517"></a><a class="indexterm" name="id966523"></a><a class="indexterm" name="id966528"></a>
Check at which side of a segment a point lies: left of segment (&gt; 0),
right of segment (&lt; 0), on segment (0)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
index 08017b8d19..70a339d1dc 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula"></a><a class="link" href="strategy_side_spherical_side_formula.html" title="strategy::side::spherical_side_formula">strategy::side::spherical_side_formula</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id966719"></a><a class="indexterm" name="id966725"></a><a class="indexterm" name="id966730"></a>
+ <a class="indexterm" name="id967792"></a><a class="indexterm" name="id967798"></a><a class="indexterm" name="id967804"></a>
Check at which side of a Great Circle segment a point lies left of segment
(&gt; 0), right of segment (&lt; 0), on segment (0)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
index d880b2b0aa..1f3ef40a2f 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker"></a><a class="link" href="strategy_simplify_douglas_peucker.html" title="strategy::simplify::douglas_peucker">strategy::simplify::douglas_peucker</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id967354"></a><a class="indexterm" name="id967360"></a><a class="indexterm" name="id967365"></a>
+ <a class="indexterm" name="id968429"></a><a class="indexterm" name="id968434"></a><a class="indexterm" name="id968440"></a>
Implements the simplify algorithm.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
index fb3e13bb71..5227e3e55d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer"></a><a class="link" href="strategy_transform_inverse_transformer.html" title="strategy::transform::inverse_transformer">strategy::transform::inverse_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id968001"></a><a class="indexterm" name="id968007"></a><a class="indexterm" name="id968012"></a>
+ <a class="indexterm" name="id969076"></a><a class="indexterm" name="id969081"></a><a class="indexterm" name="id969087"></a>
Transformation strategy to do an inverse ransformation in Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
index dcfa52845d..9c20c9a395 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_map_transformer"></a><a class="link" href="strategy_transform_map_transformer.html" title="strategy::transform::map_transformer">strategy::transform::map_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id968666"></a><a class="indexterm" name="id968671"></a><a class="indexterm" name="id968677"></a>
+ <a class="indexterm" name="id969740"></a><a class="indexterm" name="id969746"></a><a class="indexterm" name="id969751"></a>
Transformation strategy to do map from one to another Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
index b07c12a499..357c82814e 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer"></a><a class="link" href="strategy_transform_rotate_transformer.html" title="strategy::transform::rotate_transformer">strategy::transform::rotate_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id969858"></a><a class="indexterm" name="id969864"></a><a class="indexterm" name="id969870"></a>
+ <a class="indexterm" name="id970933"></a><a class="indexterm" name="id970938"></a><a class="indexterm" name="id970944"></a>
Strategy of rotate transformation in Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
index 1296792f07..aab81a6eb3 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_scale_transformer"></a><a class="link" href="strategy_transform_scale_transformer.html" title="strategy::transform::scale_transformer">strategy::transform::scale_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id970432"></a><a class="indexterm" name="id970438"></a><a class="indexterm" name="id970443"></a>
+ <a class="indexterm" name="id971506"></a><a class="indexterm" name="id971512"></a><a class="indexterm" name="id971518"></a>
Strategy of scale transformation in Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
index e857e5df95..1522c9c488 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_translate_transformer"></a><a class="link" href="strategy_transform_translate_transformer.html" title="strategy::transform::translate_transformer">strategy::transform::translate_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id970940"></a><a class="indexterm" name="id970946"></a><a class="indexterm" name="id970952"></a>
+ <a class="indexterm" name="id972015"></a><a class="indexterm" name="id972021"></a><a class="indexterm" name="id972026"></a>
Strategy of translate transformation in Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
index b263508d35..d7d230de0d 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer"></a><a class="link" href="strategy_transform_ublas_transformer.html" title="strategy::transform::ublas_transformer">strategy::transform::ublas_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id971446"></a><a class="indexterm" name="id971451"></a><a class="indexterm" name="id971457"></a>
+ <a class="indexterm" name="id972521"></a><a class="indexterm" name="id972526"></a><a class="indexterm" name="id972532"></a>
Affine transformation strategy in Cartesian system.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
index d9c3bc5380..8d3b86fa44 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_within_crossings_multiply"></a><a class="link" href="strategy_within_crossings_multiply.html" title="strategy::within::crossings_multiply">strategy::within::crossings_multiply</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id973528"></a><a class="indexterm" name="id973534"></a><a class="indexterm" name="id973539"></a>
+ <a class="indexterm" name="id974603"></a><a class="indexterm" name="id974609"></a><a class="indexterm" name="id974614"></a>
Within detection using cross counting,.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
index 379044c1a6..1b95b394c7 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_within_franklin"></a><a class="link" href="strategy_within_franklin.html" title="strategy::within::franklin">strategy::within::franklin</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id972722"></a><a class="indexterm" name="id972728"></a><a class="indexterm" name="id972734"></a>
+ <a class="indexterm" name="id973797"></a><a class="indexterm" name="id973803"></a><a class="indexterm" name="id973809"></a>
Within detection using cross counting.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
index cfda0208ad..5e2390dacf 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.strategies.strategy_within_winding"></a><a class="link" href="strategy_within_winding.html" title="strategy::within::winding">strategy::within::winding</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id971920"></a><a class="indexterm" name="id971926"></a><a class="indexterm" name="id971931"></a>
+ <a class="indexterm" name="id972995"></a><a class="indexterm" name="id973001"></a><a class="indexterm" name="id973006"></a>
Within detection using winding rule.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/views.html b/libs/geometry/doc/html/geometry/reference/views.html
index 2d82f1ac15..2d82f1ac15 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views.html
+++ b/libs/geometry/doc/html/geometry/reference/views.html
diff --git a/libs/geometry/doc/html/geometry/reference/views/box_view.html b/libs/geometry/doc/html/geometry/reference/views/box_view.html
index 343457093d..c02dd19946 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views/box_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/box_view.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.views.box_view"></a><a class="link" href="box_view.html" title="box_view">box_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id974315"></a>
+ <a class="indexterm" name="id975390"></a>
Makes a box behave like a ring or a range.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/views/closeable_view.html b/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
index c843058cf7..f5a2c109f0 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.views.closeable_view"></a><a class="link" href="closeable_view.html" title="closeable_view">closeable_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id977169"></a>
+ <a class="indexterm" name="id978244"></a>
View on a range, either closing it or leaving it as it is.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/views/identity_view.html b/libs/geometry/doc/html/geometry/reference/views/identity_view.html
index 75069b2a95..73bdc1f776 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views/identity_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/identity_view.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.views.identity_view"></a><a class="link" href="identity_view.html" title="identity_view">identity_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id977836"></a>
+ <a class="indexterm" name="id979182"></a>
View on a range, not modifying anything.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/views/reversible_view.html b/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
index b4ce0e464c..de5cc39593 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.views.reversible_view"></a><a class="link" href="reversible_view.html" title="reversible_view">reversible_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id977523"></a>
+ <a class="indexterm" name="id978869"></a>
View on a range, reversing direction if necessary.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/reference/views/segment_view.html b/libs/geometry/doc/html/geometry/reference/views/segment_view.html
index 2448423fb1..625a02e887 100755..100644
--- a/libs/geometry/doc/html/geometry/reference/views/segment_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/segment_view.html
@@ -27,7 +27,7 @@
<a name="geometry.reference.views.segment_view"></a><a class="link" href="segment_view.html" title="segment_view">segment_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id975768"></a>
+ <a class="indexterm" name="id976843"></a>
Makes a segment behave like a linestring or a range.
</p>
<h6>
diff --git a/libs/geometry/doc/html/geometry/release_notes.html b/libs/geometry/doc/html/geometry/release_notes.html
index 956a106641..6b9d3ea4a5 100755..100644
--- a/libs/geometry/doc/html/geometry/release_notes.html
+++ b/libs/geometry/doc/html/geometry/release_notes.html
@@ -28,6 +28,94 @@
</h2></div></div></div>
<h4>
<a name="geometry.release_notes.h0"></a>
+ <span><a name="geometry.release_notes.boost_1_51"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_51">Boost
+ 1.51</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Breaking changes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ points accessed through a pointer (e.g. in a linestring) should now be
+ specialized without the pointer. In previous versions a type <code class="computeroutput"><span class="identifier">my_point</span></code> used like <code class="computeroutput"><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">my_point</span><span class="special">*&gt;</span></code> had to be specalized like: <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">my_point</span><span class="special">*&gt;</span></code>. Now the library itself removes the
+ pointer before calling the traits class, so now it should be like: <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">my_point</span><span class="special">&gt;</span></code>
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ intersection was sometimes wrong for integer points, fixed
+ </li>
+<li class="listitem">
+ documentation, order of parameters in simplify was wrong, fixed
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/7030" target="_top">7030</a>
+ spherical distance, fixed (by patch of Karsten Ahnert)
+ </li></ul></div>
+<h4>
+<a name="geometry.release_notes.h1"></a>
+ <span><a name="geometry.release_notes.boost_1_50"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_50">Boost
+ 1.50</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ the return type of comparable projected point strategy for integer points
+ was wrong (integer), fixed
+ </li>
+<li class="listitem">
+ several robustness issues in intersection of segments and polygons, fixed
+ </li>
+<li class="listitem">
+ invalid intersection output is filtered out
+ </li>
+<li class="listitem">
+ disjoint for multi_polygon's might incorrectly return true, fixed
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/6585" target="_top">6585</a>
+ patch for alternative syntax multipoint, applied
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/6584" target="_top">6584</a>
+ patch for bug in distance, applied
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/5730" target="_top">5730</a>
+ same issue as 6584, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/6166" target="_top">6166</a>
+ patch for missing transformation, applied
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/6696" target="_top">6696</a>
+ invalid intersection output, was (by chance) already fixed in Trunk before
+ reported
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+ added algorithm "touches" (OGC SF compliant) for *polygon/*polygon
+ </li></ul></div>
+<h4>
+<a name="geometry.release_notes.h2"></a>
<span><a name="geometry.release_notes.boost_1_49"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_49">Boost
1.49</a>
</h4>
@@ -147,7 +235,7 @@
</li>
</ul></div>
<h4>
-<a name="geometry.release_notes.h1"></a>
+<a name="geometry.release_notes.h3"></a>
<span><a name="geometry.release_notes.boost_1_48"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_48">Boost
1.48</a>
</h4>
@@ -239,7 +327,7 @@
Basic (limited) support for Boost.Rational
</li></ul></div>
<h4>
-<a name="geometry.release_notes.h2"></a>
+<a name="geometry.release_notes.h4"></a>
<span><a name="geometry.release_notes.boost_1_47"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_47">Boost
1.47</a>
</h4>
diff --git a/libs/geometry/doc/html/geometry_HTML.manifest b/libs/geometry/doc/html/geometry_HTML.manifest
index ffb7a34918..de56933d7f 100755..100644
--- a/libs/geometry/doc/html/geometry_HTML.manifest
+++ b/libs/geometry/doc/html/geometry_HTML.manifest
@@ -125,6 +125,9 @@ geometry/reference/algorithms/simplify.html
geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
geometry/reference/algorithms/simplify/simplify_3.html
geometry/reference/algorithms/sym_difference.html
+geometry/reference/algorithms/touches.html
+geometry/reference/algorithms/touches/touches_1_one_geometry.html
+geometry/reference/algorithms/touches/touches_2_two_geometries.html
geometry/reference/algorithms/transform.html
geometry/reference/algorithms/transform/transform_3_with_strategy.html
geometry/reference/algorithms/transform/transform_2.html
diff --git a/libs/geometry/doc/html/index.html b/libs/geometry/doc/html/index.html
index b6ba22e633..b2e72f990a 100644
--- a/libs/geometry/doc/html/index.html
+++ b/libs/geometry/doc/html/index.html
@@ -94,6 +94,9 @@
<li class="listitem">
Federico Fern&#225;ndez (spatial indexes) <sup>[<a name="geometry.f1" href="#ftn.geometry.f1" class="footnote">2</a>]</sup>
</li>
+<li class="listitem">
+ Karsten Ahnert (patch for cross-track distance)
+ </li>
</ul></div>
<div class="footnotes">
<br><hr width="100" align="left">
@@ -106,7 +109,7 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 20, 2012 at 20:24:56 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 15, 2012 at 23:31:54 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
diff --git a/libs/geometry/doc/make_qbk.py b/libs/geometry/doc/make_qbk.py
index 0fc3b97ab9..74aa52995c 100755
--- a/libs/geometry/doc/make_qbk.py
+++ b/libs/geometry/doc/make_qbk.py
@@ -73,7 +73,7 @@ algorithms = ["append", "assign", "make", "clear"
, "envelope", "equals", "expand", "for_each", "intersection", "intersects"
, "length", "num_geometries", "num_interior_rings", "num_points"
, "overlaps", "perimeter", "reverse", "simplify", "sym_difference"
- , "transform", "union", "unique", "within"]
+ , "touches", "transform", "union", "unique", "within"]
access_functions = ["get", "set", "exterior_ring", "interior_rings"
, "num_points", "num_interior_rings", "num_geometries"]
diff --git a/libs/geometry/doc/quickref.xml b/libs/geometry/doc/quickref.xml
index 906ffd005a..2a70b4612f 100644
--- a/libs/geometry/doc/quickref.xml
+++ b/libs/geometry/doc/quickref.xml
@@ -112,8 +112,6 @@
</entry>
<entry valign="top">
<bridgehead renderas="sect3">1-dimensional (adapted)</bridgehead>
- <simplelist type="vert" columns="1">
- </simplelist>
</entry>
<entry valign="top">
<bridgehead renderas="sect3">2-dimensional (adapted)</bridgehead>
@@ -324,6 +322,7 @@
<member><link linkend="geometry.reference.algorithms.equals">equals</link></member>
<member><link linkend="geometry.reference.algorithms.intersects">intersects</link></member>
<member><link linkend="geometry.reference.algorithms.overlaps">overlaps</link></member>
+ <member><link linkend="geometry.reference.algorithms.touches">touches</link></member>
<member><link linkend="geometry.reference.algorithms.within">within</link></member>
</simplelist>
</entry>
diff --git a/libs/geometry/doc/reference.qbk b/libs/geometry/doc/reference.qbk
index d665e087cd..a9a2192b94 100644
--- a/libs/geometry/doc/reference.qbk
+++ b/libs/geometry/doc/reference.qbk
@@ -143,6 +143,10 @@
[include generated/sym_difference.qbk]
[/endsect]
+[section:touches touches]
+[include generated/touches.qbk]
+[endsect]
+
[section:transform transform]
[include generated/transform.qbk]
[endsect]
diff --git a/libs/geometry/doc/reference/algorithms/touches.qbk b/libs/geometry/doc/reference/algorithms/touches.qbk
new file mode 100644
index 0000000000..56e502c932
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/touches.qbk
@@ -0,0 +1,19 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+
+ Use, modification and distribution is 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)
+=============================================================================/]
+
+[def __this_function__ touches]
+
+[heading_conformance_ogc __this_function__..Touches]
+[? __one_parameter__ The version with one parameter is additional and not described in the OGC standard]
+
+[note only implemented for polygon/multi_polygon]
+
diff --git a/libs/geometry/doc/release_notes.qbk b/libs/geometry/doc/release_notes.qbk
index 752616e690..445c03862a 100644
--- a/libs/geometry/doc/release_notes.qbk
+++ b/libs/geometry/doc/release_notes.qbk
@@ -12,6 +12,48 @@
[section:release_notes Release Notes]
+
+[/=================]
+[heading Boost 1.51]
+[/=================]
+
+[*Breaking changes]
+
+* points accessed through a pointer (e.g. in a linestring) should now be specialized without the pointer. In previous versions a type `my_point` used like `linestring<my_point*>` had to be specalized like: `template<> struct tag<my_point*>`. Now the library itself removes the pointer before calling the traits class, so now it should be like: `template<> struct tag<my_point>`
+
+[*Bugfixes]
+
+* intersection was sometimes wrong for integer points, fixed
+* documentation, order of parameters in simplify was wrong, fixed
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/7030 7030] spherical distance, fixed (by patch of Karsten Ahnert)
+
+
+[/=================]
+[heading Boost 1.50]
+[/=================]
+
+[*Bugfixes]
+
+* the return type of comparable projected point strategy for integer points was wrong (integer), fixed
+* several robustness issues in intersection of segments and polygons, fixed
+* invalid intersection output is filtered out
+* disjoint for multi_polygon's might incorrectly return true, fixed
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/6585 6585] patch for alternative syntax multipoint, applied
+* [@https://svn.boost.org/trac/boost/ticket/6584 6584] patch for bug in distance, applied
+* [@https://svn.boost.org/trac/boost/ticket/5730 5730] same issue as 6584, fixed
+* [@https://svn.boost.org/trac/boost/ticket/6166 6166] patch for missing transformation, applied
+* [@https://svn.boost.org/trac/boost/ticket/6696 6696] invalid intersection output, was (by chance) already fixed in Trunk before reported
+
+[*Additional functionality]
+
+* added algorithm "touches" (OGC SF compliant) for *polygon/*polygon
+
[/=================]
[heading Boost 1.49]
[/=================]
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
index 070f202a19..aa8b902192 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
@@ -228,6 +228,46 @@ static void parse_parameter_list(rapidxml::xml_node<>* node, Parameters& paramet
}
}
+static void copy_string_property(std::string const& source, std::string& target)
+{
+ if (target.empty())
+ {
+ target = source;
+ }
+}
+
+
+template <typename Parameters>
+static void copy_parameter_properties(parameter const& source, Parameters& target)
+{
+ BOOST_FOREACH(parameter& t, target)
+ {
+ if (source.name == t.name)
+ {
+ t.skip = source.skip;
+ copy_string_property(source.brief_description, t.brief_description);
+ copy_string_property(source.type, t.type);
+ copy_string_property(source.default_value, t.default_value);
+ copy_string_property(source.fulltype, t.fulltype);
+
+ return;
+ }
+ }
+ // If not found, write a warning
+ std::cerr << "Parameter not found: " << source.name << std::endl;
+}
+
+
+template <typename Parameters>
+static void copy_parameters_properties(Parameters const& source, Parameters& target)
+{
+ BOOST_FOREACH(parameter const& s, source)
+ {
+ copy_parameter_properties(s, target);
+ }
+}
+
+
template <typename Element>
static void parse_element(rapidxml::xml_node<>* node, configuration const& config, std::string const& parent, Element& el)
@@ -290,13 +330,25 @@ static void parse_element(rapidxml::xml_node<>* node, configuration const& confi
std::string kind = get_attribute(node, "kind");
if (kind == "param")
{
- parse_parameter_list(node->first_node(), el.parameters);
+ // Parse parameters and their descriptions.
+ // NOTE: they are listed here, but the order might not be the order in the function call
+ std::vector<parameter> parameters;
+ parse_parameter_list(node->first_node(), parameters);
+ copy_parameters_properties(parameters, el.parameters);
}
else if (kind == "templateparam")
{
parse_parameter_list(node->first_node(), el.template_parameters);
}
}
+ else if (full == ".param")
+ {
+ // Parse one parameter, and add it to el.parameters
+ parameter p;
+ parse_parameter(node->first_node(), p);
+ el.parameters.push_back(p);
+ }
+
parse_element(node->first_node(), config, full, el);
parse_element(node->next_sibling(), config, parent, el);
diff --git a/libs/geometry/example/Jamfile.v2 b/libs/geometry/example/Jamfile.v2
index 7a17e84250..17fae5000c 100644
--- a/libs/geometry/example/Jamfile.v2
+++ b/libs/geometry/example/Jamfile.v2
@@ -29,6 +29,7 @@ exe c02_custom_box_example : c02_custom_box_example.cpp ;
exe c03_custom_linestring_example : c03_custom_linestring_example.cpp ;
exe c04_a_custom_triangle_example : c04_a_custom_triangle_example.cpp ;
exe c04_b_custom_triangle_example : c04_b_custom_triangle_example.cpp ;
+exe c05_custom_point_pointer_example : c05_custom_point_pointer_example.cpp ;
exe c06_custom_polygon_example : c06_custom_polygon_example.cpp ;
exe c07_custom_ring_pointer_example : c07_custom_ring_pointer_example.cpp ;
exe c08_custom_non_std_example : c08_custom_non_std_example.cpp ;
diff --git a/libs/geometry/example/c05_custom_point_pointer_example.cpp b/libs/geometry/example/c05_custom_point_pointer_example.cpp
index 96bc22e497..d8059fe04d 100644
--- a/libs/geometry/example/c05_custom_point_pointer_example.cpp
+++ b/libs/geometry/example/c05_custom_point_pointer_example.cpp
@@ -35,42 +35,42 @@ struct my_point
namespace boost { namespace geometry { namespace traits {
-template<> struct tag<my_point*>
+template<> struct tag<my_point>
{ typedef point_tag type; };
-template<> struct coordinate_type<my_point*>
+template<> struct coordinate_type<my_point>
{ typedef double type; };
-template<> struct coordinate_system<my_point*>
+template<> struct coordinate_system<my_point>
{ typedef cs::cartesian type; };
-template<> struct dimension<my_point*> : boost::mpl::int_<2> {};
+template<> struct dimension<my_point> : boost::mpl::int_<2> {};
template<>
-struct access<my_point*, 0>
+struct access<my_point, 0>
{
- static double get(my_point const* p)
+ static double get(my_point const& p)
{
- return p->x;
+ return p.x;
}
- static void set(my_point* p, double const& value)
+ static void set(my_point& p, double const& value)
{
- p->x = value;
+ p.x = value;
}
};
template<>
-struct access<my_point*, 1>
+struct access<my_point, 1>
{
- static double get(my_point const* p)
+ static double get(my_point const& p)
{
- return p->y;
+ return p.y;
}
- static void set(my_point* p, double const& value)
+ static void set(my_point& p, double const& value)
{
- p->y = value;
+ p.y = value;
}
};
diff --git a/libs/geometry/example/c07_custom_ring_pointer_example.cpp b/libs/geometry/example/c07_custom_ring_pointer_example.cpp
index 812dff21aa..9126e04bcb 100644
--- a/libs/geometry/example/c07_custom_ring_pointer_example.cpp
+++ b/libs/geometry/example/c07_custom_ring_pointer_example.cpp
@@ -14,7 +14,9 @@
#include <boost/foreach.hpp>
-#include <boost/geometry/geometry.hpp>
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/register/ring.hpp>
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::vector)
@@ -32,42 +34,42 @@ struct my_point
namespace boost { namespace geometry { namespace traits {
-template<> struct tag<my_point*>
+template<> struct tag<my_point>
{ typedef point_tag type; };
-template<> struct coordinate_type<my_point*>
+template<> struct coordinate_type<my_point>
{ typedef double type; };
-template<> struct coordinate_system<my_point*>
+template<> struct coordinate_system<my_point>
{ typedef cs::cartesian type; };
-template<> struct dimension<my_point*> : boost::mpl::int_<2> {};
+template<> struct dimension<my_point> : boost::mpl::int_<2> {};
template<>
-struct access<my_point*, 0>
+struct access<my_point, 0>
{
- static double get(my_point const* p)
+ static double get(my_point const& p)
{
- return p->x;
+ return p.x;
}
- static void set(my_point* p, double const& value)
+ static void set(my_point& p, double const& value)
{
- p->x = value;
+ p.x = value;
}
};
template<>
-struct access<my_point*, 1>
+struct access<my_point, 1>
{
- static double get(my_point const* p)
+ static double get(my_point const& p)
{
- return p->y;
+ return p.y;
}
- static void set(my_point* p, double const& value)
+ static void set(my_point& p, double const& value)
{
- p->y = value;
+ p.y = value;
}
};
@@ -101,30 +103,33 @@ int main()
//std::vector<ring_type> unioned;
//boost::geometry::union<ring_type>(a, b, unioned);
- /* This once worked, using pointers, but has to be fixed or deprecated
- typedef boost::geometry::model::ring<boost::geometry::model::d2::point_xy<double> > ring_2d;
- std::vector<ring_2d> unioned;
- std::vector<ring_2d> intersected;
+ // BEGIN TODO
+ // This compiles (and once worked) using pointers, but has to be fixed or deprecated
+ // The problem is now the cart_intersect/side where a temporary point is generated
+ //typedef boost::geometry::model::ring<boost::geometry::model::d2::point_xy<double> > ring_2d;
+ //std::vector<ring_2d> unioned;
+ //std::vector<ring_2d> intersected;
+
+ //boost::geometry::intersection(a, b, intersected);
+ //boost::geometry::union_(a, b, unioned);
+
+ //double ai = 0, au = 0;
+ //BOOST_FOREACH(ring_2d const& ring, intersected)
+ //{
+ // ai += boost::geometry::area(ring);
+ //}
+ //BOOST_FOREACH(ring_2d const& ring, unioned)
+ //{
+ // au += boost::geometry::area(ring);
+ //}
+
+ //std::cout << "a: " << aa << std::endl;
+ //std::cout << "b: " << ab << std::endl;
+ //std::cout << "a & b: " << ai << std::endl;
+ //std::cout << "a | b: " << au << std::endl;
+ //std::cout << "a + b - (a & b): " << (aa + ab - ai) << std::endl;
+ // END TODO
- boost::geometry::intersection(a, b, intersected);
- boost::geometry::union_(a, b, unioned);
-
- double ai = 0, au = 0;
- BOOST_FOREACH(ring_2d const& ring, intersected)
- {
- ai += boost::geometry::area(ring);
- }
- BOOST_FOREACH(ring_2d const& ring, unioned)
- {
- au += boost::geometry::area(ring);
- }
-
- std::cout << "a: " << aa << std::endl;
- std::cout << "b: " << ab << std::endl;
- std::cout << "a & b: " << ai << std::endl;
- std::cout << "a | b: " << au << std::endl;
- std::cout << "a + b - (a & b): " << (aa + ab - ai) << std::endl;
- */
// free
BOOST_FOREACH(my_point* p, a)
diff --git a/libs/geometry/test/algorithms/Jamfile.v2 b/libs/geometry/test/algorithms/Jamfile.v2
index e412f0adfc..13811d3036 100644
--- a/libs/geometry/test/algorithms/Jamfile.v2
+++ b/libs/geometry/test/algorithms/Jamfile.v2
@@ -35,6 +35,7 @@ test-suite boost-geometry-algorithms
[ run perimeter.cpp ]
[ run reverse.cpp ]
[ run simplify.cpp ]
+ [ run touches.cpp ]
[ run transform.cpp ]
[ run union.cpp ]
[ run unique.cpp ]
diff --git a/libs/geometry/test/algorithms/algorithms_tests.sln b/libs/geometry/test/algorithms/algorithms_tests.sln
index 124ad8af03..96ba064921 100644
--- a/libs/geometry/test/algorithms/algorithms_tests.sln
+++ b/libs/geometry/test/algorithms/algorithms_tests.sln
@@ -58,6 +58,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert", "convert.vcproj",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "covered_by", "covered_by.vcproj", "{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "touches", "touches.vcproj", "{8359726E-9F03-4300-8F63-1FEAC84251D0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -180,6 +182,10 @@ Global
{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Debug|Win32.Build.0 = Debug|Win32
{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.ActiveCfg = Release|Win32
{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.Build.0 = Release|Win32
+ {8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.Build.0 = Debug|Win32
+ {8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.ActiveCfg = Release|Win32
+ {8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/libs/geometry/test/algorithms/difference.cpp b/libs/geometry/test/algorithms/difference.cpp
index 642cd1e660..e72af3c24b 100644
--- a/libs/geometry/test/algorithms/difference.cpp
+++ b/libs/geometry/test/algorithms/difference.cpp
@@ -7,6 +7,8 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
+// #define TEST_ISOVIST
+
//#define BOOST_GEOMETRY_CHECK_WITH_POSTGIS
//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
@@ -258,12 +260,17 @@ void test_all()
***/
#ifdef _MSC_VER
- // Isovist (submitted by Brandon during Formal Review)
+#ifdef TEST_ISOVIST
test_one<polygon, polygon, polygon>("isovist",
isovist1[0], isovist1[1],
- 4, 0, 0.279121891701124,
- 4, 0, 224.889211358929,
- 0.01);
+ if_typed_tt<ct>(4, 2), 0, 0.279121891701124,
+ if_typed_tt<ct>(4, 3), 0, if_typed_tt<ct>(224.889211358929, 223.777),
+ if_typed_tt<ct>(0.001, 0.2));
+
+ // SQL Server gives: 0.279121891701124 and 224.889211358929
+ // PostGIS gives: 0.279121991127244 and 224.889205853156
+
+#endif
test_one<polygon, polygon, polygon>("ggl_list_20110306_javier",
ggl_list_20110306_javier[0], ggl_list_20110306_javier[1],
@@ -277,11 +284,14 @@ void test_all()
1, 0, 3200.4,
0.01);
- test_one<polygon, polygon, polygon>("ggl_list_20110716_enrico",
- ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
- 3, 0, 35723.8506317139,
- 1, 0, 58456.4964294434
- );
+ if (! boost::is_same<ct, float>::value)
+ {
+ test_one<polygon, polygon, polygon>("ggl_list_20110716_enrico",
+ ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
+ 3, 0, 35723.8506317139,
+ 1, 0, 58456.4964294434
+ );
+ }
test_one<polygon, polygon, polygon>("ggl_list_20110820_christophe",
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1],
@@ -300,7 +310,7 @@ void test_all()
// Because we cannot predict this, we only test for MSVC
test_one<polygon, polygon, polygon>("ggl_list_20110627_phillip",
ggl_list_20110627_phillip[0], ggl_list_20110627_phillip[1],
- if_typed<ct, double>(0, 1), 0,
+ if_typed_tt<ct>(1, 0), 0,
if_typed_tt<ct>(0.0000000000001105367, 0.0),
1, 0, 3577.40960816756,
0.01
@@ -465,6 +475,7 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<float> >();
#ifdef HAVE_TTMATH
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
//test_difference_parcel_precision<ttmath_big>();
#endif
diff --git a/libs/geometry/test/algorithms/disjoint.cpp b/libs/geometry/test/algorithms/disjoint.cpp
index a5e6025683..7cf3c683cc 100644
--- a/libs/geometry/test/algorithms/disjoint.cpp
+++ b/libs/geometry/test/algorithms/disjoint.cpp
@@ -113,6 +113,21 @@ void test_all()
test_disjoint<segment, segment>("s/s 1", "linestring(0 0,1 1)", "linestring(1 0,0 1)", false);
test_disjoint<segment, segment>("s/s 2", "linestring(0 0,1 1)", "linestring(1 0,2 1)", true);
+ // Collinear opposite
+ test_disjoint<ls, ls>("ls/ls co", "linestring(0 0,2 2)", "linestring(1 1,0 0)", false);
+ // Collinear opposite and equal
+ test_disjoint<ls, ls>("ls/ls co-e", "linestring(0 0,1 1)", "linestring(1 1,0 0)", false);
+
+
+ // Problem described by Volker/Albert 2012-06-01
+ test_disjoint<polygon, box>("volker_albert_1",
+ "POLYGON((1992 3240,1992 1440,3792 1800,3792 3240,1992 3240))",
+ "BOX(1941 2066, 2055 2166)", false);
+
+ test_disjoint<polygon, box>("volker_albert_2",
+ "POLYGON((1941 2066,2055 2066,2055 2166,1941 2166))",
+ "BOX(1941 2066, 2055 2166)", false);
+
// Degenerate linestrings
{
// Submitted by Zachary on the Boost.Geometry Mailing List, on 2012-01-29
diff --git a/libs/geometry/test/algorithms/distance.cpp b/libs/geometry/test/algorithms/distance.cpp
index 3803fe9ad0..e7d0729764 100644
--- a/libs/geometry/test/algorithms/distance.cpp
+++ b/libs/geometry/test/algorithms/distance.cpp
@@ -194,7 +194,11 @@ void test_all()
test_geometry<P, P>("POINT(0 3)", "POINT(4 0)", 5.0);
test_geometry<P, bg::model::linestring<P> >("POINT(1 3)", "LINESTRING(1 1,4 4)", sqrt(2.0));
test_geometry<P, bg::model::linestring<P> >("POINT(3 1)", "LINESTRING(1 1,4 4)", sqrt(2.0));
+ test_geometry<P, bg::model::linestring<P> >("POINT(50 50)", "LINESTRING(50 40, 40 50)", sqrt(50.0));
+ test_geometry<P, bg::model::linestring<P> >("POINT(50 50)", "LINESTRING(50 40, 40 50, 0 90)", sqrt(50.0));
test_geometry<bg::model::linestring<P>, P>("LINESTRING(1 1,4 4)", "POINT(1 3)", sqrt(2.0));
+ test_geometry<bg::model::linestring<P>, P>("LINESTRING(50 40, 40 50)", "POINT(50 50)", sqrt(50.0));
+ test_geometry<bg::model::linestring<P>, P>("LINESTRING(50 40, 40 50, 0 90)", "POINT(50 50)", sqrt(50.0));
// Rings
test_geometry<P, bg::model::ring<P> >("POINT(1 3)", "POLYGON((1 1,4 4,5 0,1 1))", sqrt(2.0));
diff --git a/libs/geometry/test/algorithms/intersection.cpp b/libs/geometry/test/algorithms/intersection.cpp
index 680b1f31af..05e0a46a1c 100644
--- a/libs/geometry/test/algorithms/intersection.cpp
+++ b/libs/geometry/test/algorithms/intersection.cpp
@@ -15,6 +15,9 @@
#include <iostream>
#include <string>
+#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
+#define TEST_ISOVIST
+
//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
//#define BOOST_GEOMETRY_DEBUG_INTERSECTION
//#define BOOST_GEOMETRY_DEBUG_TRAVERSE
@@ -164,14 +167,17 @@ void test_areal()
typedef typename bg::coordinate_type<Polygon>::type ct;
+#ifdef TEST_ISOVIST
#ifdef _MSC_VER
- // Isovist (submitted by Brandon during Formal Review)
test_one<Polygon, Polygon, Polygon>("isovist",
isovist1[0], isovist1[1],
- 1,
- if_typed<ct, float>(19, if_typed<ct, double>(20, 20)),
- 88.19203,
- if_typed<ct, float>(0.5, if_typed<ct, double>(0.1, 0.01)));
+ 1, 20, 88.19203,
+ if_typed_tt<ct>(0.01, 0.1));
+
+ // SQL Server gives: 88.1920416352664
+ // PostGIS gives: 88.19203677911
+
+#endif
#endif
//std::cout << typeid(ct).name() << std::endl;
@@ -191,13 +197,22 @@ void test_areal()
1, if_typed_tt<ct>(6, 5), 11151.6618);
#ifdef _MSC_VER // gcc/linux behaves differently
- test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
- ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
- 3,
- if_typed<ct, float>(19, if_typed<ct, double>(22, 21)),
- 35723.8506317139);
+ if (! boost::is_same<ct, float>::value)
+ {
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
+ ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
+ 3,
+ if_typed<ct, float>(19, if_typed<ct, double>(22, 21)),
+ 35723.8506317139);
+ }
#endif
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_f", buffer_rt_f[0], buffer_rt_f[1],
+ 1, 4, 0.00029437899183903937, 0.01);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_g", buffer_rt_g[0], buffer_rt_g[1],
+ 1, 0, 2.914213562373);
+
return;
@@ -496,6 +511,7 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<float> >();
#if defined(HAVE_TTMATH)
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
diff --git a/libs/geometry/test/algorithms/overlay/get_turn_info.cpp b/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
index 0eb12c6050..476e719e4d 100644
--- a/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
+++ b/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
@@ -807,14 +807,12 @@ void test_all()
4, 3, 2, 3, 0, 3, // q
method_touch, 2, 3, "xx");
- /***
- TODO, work this out further / check this
- // Case where
- test_both<P, double>("issue_buffer_mill",
- 5.1983614873206241 , 6.7259025813913107 , 5.0499999999999998 , 6.4291796067500622 , 5.1983614873206241 , 6.7259025813913107, // p
- 5.0499999999999998 , 6.4291796067500622 , 5.0499999999999998 , 6.4291796067500622 , 5.1983614873206241 , 6.7259025813913107, // q
- method_collinear, 2, 0, "tt");
- ***/
+ // BSG 2012-05-26 to be decided what's the problem here and what it tests...
+ // Anyway, test results are not filled out.
+ //test_both<P, double>("issue_buffer_mill",
+ // 5.1983614873206241 , 6.7259025813913107 , 5.0499999999999998 , 6.4291796067500622 , 5.1983614873206241 , 6.7259025813913107, // p
+ // 5.0499999999999998 , 6.4291796067500622 , 5.0499999999999998 , 6.4291796067500622 , 5.1983614873206241 , 6.7259025813913107, // q
+ // method_collinear, 2, 0, "tt");
}
diff --git a/libs/geometry/test/algorithms/overlay/get_turns.cpp b/libs/geometry/test/algorithms/overlay/get_turns.cpp
index 12c4dd19ce..cfeb4ca07b 100644
--- a/libs/geometry/test/algorithms/overlay/get_turns.cpp
+++ b/libs/geometry/test/algorithms/overlay/get_turns.cpp
@@ -54,7 +54,7 @@ struct test_get_turns
{
template<typename G1, typename G2>
static void apply(std::string const& id,
- int expected_count,
+ std::size_t expected_count,
G1 const& g1, G2 const& g2, double precision)
{
typedef bg::detail::overlay::turn_info
@@ -133,7 +133,7 @@ struct test_get_turns
template<typename G1, typename G2>
struct test_get_turns
{
- inline static void apply(std::string const& id, int expected_count,
+ inline static void apply(std::string const& id, std::size_t expected_count,
std::string const& wkt1, std::string const& wkt2,
double precision = 0.001)
{
@@ -304,9 +304,10 @@ void test_all()
ggl_list_20110306_javier[0], ggl_list_20110306_javier[1]);
#ifdef _MSC_VER // gcc returns 14 for float
- test_get_turns<polygon, polygon>::apply("ggl_list_20110716_enrico",
- 13,
- ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1]);
+ // test_get_turns<polygon, polygon>::apply("ggl_list_20110716_enrico",
+ // 13,
+ // ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1]);
+
#endif
// pies
diff --git a/libs/geometry/test/algorithms/overlay/overlay_cases.hpp b/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
index dfe7c24bd4..a4326b07ba 100644
--- a/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
+++ b/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
@@ -480,6 +480,7 @@ static std::string snl_1[2] = {
"POLYGON((184861.118 606901.158,184893.787 606898.483,184925.043 606913.4,184927.174 606951.759,184912.9 606987.146,184877.87 606989.232,184885.103 607023.774,184899.058 607022.743,184906.008 607044.948,184966.465 607025.02,184968.442 606961.3,185024.768 606947.402,185024.544 606941.355,185027.007 606937.323,185030.366 606934.187,185035.516 606933.963,185040.442 606935.531,185042.905 606939.115,185088.364 606931.385,185089.139 607015.509,185095.2 607011.3,185118.827 606995.545,185126.813 606991.995,185177.727 606973.799,185181.482 606966.676,185193.571 606977.795,185193.711 606960.3,185189.352 606779.02,185167.515 606783.844,185086.96 606801.241,185011.707 606817.809,185000 606819.304,184994.034 606819.794,184976.398 606819.572,184956.654 606817.131,184934.913 606813.137,184893.097 606804.927,184884.445 606831.555,184866.919 606883.481,184861.118 606901.158),(184907.556 607013.301,184905.782 607009.972,184906.004 607005.978,184908.444 606998.877,184912.215 606994.218,184919.314 606993.996,184922.42 606995.771,184925.747 606998.877,184926.413 607002.872,184925.747 607007.753,184922.42 607012.191,184917.096 607015.298,184911.771 607015.298,184907.556 607013.301))"};
+// Isovist (submitted by Brandon during Formal Review)
static std::string isovist[2] =
{
"POLYGON((37.29449462890625 1.7902572154998779, 46.296027072709599 -2.4984308554828116, 45.389434814453125 -4.5143837928771973, 47.585065917176543 -6.1314922196594779, 46.523914387974358 -8.5152102535033496, 42.699958801269531 -4.4278755187988281, 42.577877044677734 -4.4900407791137695, 42.577911376953125 -4.4901103973388672, 40.758884429931641 -5.418975830078125, 40.6978759765625 -5.4500408172607422, 41.590042114257813 -7.2021245956420898, 57.297810222148939 -37.546793343968417, 50.974888957147442 -30.277285722290763, 37.140213012695313 1.3446992635726929, 37.000419616699219 1.664225697517395, 37.29449462890625 1.7902572154998779))",
@@ -559,5 +560,99 @@ static std::string ticket_5103[2] =
"POLYGON((-95269304 222758,-95260668 419862,-95234760 615696,-95192088 808228,-95132906 996442,-95057214 1178814,-94966028 1354074,-94860110 1520444,-94739968 1676908,-94606618 1822450,-94999048 2214880,-95165164 2033778,-95314770 1838706,-95446850 1631442,-95560388 1413510,-95654368 1186434,-95728282 951992,-95781368 711962,-95813626 468376,-95824294 222758,-95269304 222758))"
};
+static std::string ggl_list_20120229_volker[3] =
+ {
+ "POLYGON((1716 1554,2076 2250,2436 2352,2796 1248,3156 2484,3516 2688,3516 2688,3156 2484,2796 1248,2436 2352,2076 2250, 1716 1554))",
+ "POLYGON((2500 1600,2500 2300,3200 2300,3200 1600,2500 1600))",
+ "POLYGON((1716 1554,2076 2250,2436 2352,2796 1248,3156 2484,3516 2688,3156 2483,2796 1247,2436 2351,2076 2249, 1716 1554))",
+ };
+
+static std::string buffer_rt_a[2] =
+ {
+ "POLYGON((1 7,1 8,1.0012 8.04907,1.00482 8.09802,1.01082 8.14673,1.01921 8.19509,1.02997 8.24298,1.04306 8.29028,1.05846 8.33689,1.07612 8.38268,1.09601 8.42756,1.11808 8.4714,1.14227 8.5141,1.16853 8.55557,1.19679 8.5957,1.22699 8.63439,1.25905 8.67156,1.29289 8.70711,1.32844 8.74095,1.36561 8.77301,1.4043 8.80321,1.44443 8.83147,1.4859 8.85773,1.5286 8.88192,1.57244 8.90399,1.61732 8.92388,1.66311 8.94154,1.70972 8.95694,1.75702 8.97003,1.80491 8.98079,1.85327 8.98918,1.90198 8.99518,1.95093 8.9988,2 9,3 9,3.04907 8.9988,3.09802 8.99518,3.14673 8.98918,3.19509 8.98079,3.24298 8.97003,3.29028 8.95694,3.33689 8.94154,3.38268 8.92388,3.42756 8.90399,3.4714 8.88192,3.5141 8.85773,3.55557 8.83147,3.5957 8.80321,3.63439 8.77301,3.67156 8.74095,3.70711 8.70711,3.74095 8.67156,3.77301 8.63439,3.80321 8.5957,3.83147 8.55557,3.85773 8.5141,3.88192 8.4714,3.90399 8.42756,3.92388 8.38268,3.94154 8.33689,3.95694 8.29028,3.97003 8.24298,3.98079 8.19509,3.98918 8.14673,3.99518 8.09802,3.9988 8.04907,4 8,4 7,3.9988 6.95093,3.99518 6.90198,3.98918 6.85327,3.98079 6.80491,3.97003 6.75702,3.95694 6.70972,3.94154 6.66311,3.92388 6.61732,3.90399 6.57244,3.88192 6.5286,3.85773 6.4859,3.83147 6.44443,3.80321 6.4043,3.77301 6.36561,3.74095 6.32844,3.70711 6.29289,3.67156 6.25905,3.63439 6.22699,3.5957 6.19679,3.55557 6.16853,3.5141 6.14227,3.4714 6.11808,3.42756 6.09601,3.38268 6.07612,3.33689 6.05846,3.29028 6.04306,3.24298 6.02997,3.19509 6.01921,3.14673 6.01082,3.09802 6.00482,3.04907 6.0012,3 6,2 6,1.95093 6.0012,1.90198 6.00482,1.85327 6.01082,1.80491 6.01921,1.75702 6.02997,1.70972 6.04306,1.66311 6.05846,1.61732 6.07612,1.57244 6.09601,1.5286 6.11808,1.4859 6.14227,1.44443 6.16853,1.4043 6.19679,1.36561 6.22699,1.32844 6.25905,1.29289 6.29289,1.25905 6.32844,1.22699 6.36561,1.19679 6.4043,1.16853 6.44443,1.14227 6.4859,1.11808 6.5286,1.09601 6.57244,1.07612 6.61732,1.05846 6.66311,1.04306 6.70972,1.02997 6.75702,1.01921 6.80491,1.01082 6.85327,1.00482 6.90198,1.0012 6.95093,1 7))",
+ "POLYGON((3 6,4 6,4.04907 5.9988,4.09802 5.99518,4.14673 5.98918,4.19509 5.98079,4.24298 5.97003,4.29028 5.95694,4.33689 5.94154,4.38268 5.92388,4.42756 5.90399,4.4714 5.88192,4.5141 5.85773,4.55557 5.83147,4.5957 5.80321,4.63439 5.77301,4.67156 5.74095,4.70711 5.70711,4.74095 5.67156,4.77301 5.63439,4.80321 5.5957,4.83147 5.55557,4.85773 5.5141,4.88192 5.4714,4.90399 5.42756,4.92388 5.38268,4.94154 5.33689,4.95694 5.29028,4.97003 5.24298,4.98079 5.19509,4.98918 5.14673,4.99518 5.09802,4.9988 5.04907,5 5,5 4,4.9988 3.95093,4.99518 3.90198,4.98918 3.85327,4.98079 3.80491,4.97003 3.75702,4.95694 3.70972,4.94154 3.66311,4.92388 3.61732,4.90399 3.57244,4.88192 3.5286,4.85773 3.4859,4.83147 3.44443,4.80321 3.4043,4.77301 3.36561,4.74095 3.32844,4.70711 3.29289,4.67156 3.25905,4.63439 3.22699,4.5957 3.19679,4.55557 3.16853,4.5141 3.14227,4.4714 3.11808,4.42756 3.09601,4.38268 3.07612,4.33689 3.05846,4.29028 3.04306,4.24298 3.02997,4.19509 3.01921,4.14673 3.01082,4.09802 3.00482,4.04907 3.0012,4 3,3 3,3 3,2 3,1.95093 3.0012,1.90198 3.00482,1.85327 3.01082,1.80491 3.01921,1.75702 3.02997,1.70972 3.04306,1.66311 3.05846,1.61732 3.07612,1.57244 3.09601,1.5286 3.11808,1.4859 3.14227,1.44443 3.16853,1.4043 3.19679,1.36561 3.22699,1.32844 3.25905,1.29289 3.29289,1.25905 3.32844,1.22699 3.36561,1.19679 3.4043,1.16853 3.44443,1.14227 3.4859,1.11808 3.5286,1.09601 3.57244,1.07612 3.61732,1.05846 3.66311,1.04306 3.70972,1.02997 3.75702,1.01921 3.80491,1.01082 3.85327,1.00482 3.90198,1.0012 3.95093,1 4,1 5,1.0012 5.04907,1.00482 5.09802,1.01082 5.14673,1.01921 5.19509,1.02997 5.24298,1.04306 5.29028,1.05846 5.33689,1.07612 5.38268,1.09601 5.42756,1.11808 5.4714,1.14227 5.5141,1.16853 5.55557,1.19679 5.5957,1.22699 5.63439,1.25905 5.67156,1.29289 5.70711,1.32844 5.74095,1.36561 5.77301,1.4043 5.80321,1.44443 5.83147,1.4859 5.85773,1.5286 5.88192,1.57244 5.90399,1.61732 5.92388,1.66311 5.94154,1.70972 5.95694,1.75702 5.97003,1.80491 5.98079,1.85327 5.98918,1.90198 5.99518,1.95093 5.9988,2 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6,3 6))"
+ };
+
+static std::string buffer_rt_f[2] =
+ {
+ "POLYGON((-0.29999999999999999 6.0000000000000000,-0.29999999999999999 7.0000000000000000,-0.30000000000000027 7.7242640687119302,0.21213203435596423 7.2121320343559638,1.2121320343559643 6.2121320343559638,1.7242640687119293 5.7000000000000002,1.0000000000000000 5.7000000000000002,0.00000000000000000 5.7000000000000002,-0.30000000000000027 5.7000000000000002,-0.29999999999999999 6.0000000000000000))",
+ "POLYGON((1.3000000000000000 9.0000000000000000,1.3000000000000000 8.0000000000000000,1.3000000000000007 7.7000000000000002,1.0000000000000000 7.7000000000000002,0.00000000000000000 7.7000000000000002,-0.29999999999999982 7.7000000000000002,-0.29999999999999999 8.0000000000000000,-0.29999999999999999 9.0000000000000000,-0.29999999999999982 9.3000000000000007,0.00000000000000000 9.3000000000000007,1.0000000000000000 9.3000000000000007,1.3000000000000007 9.3000000000000007,1.3000000000000000 9.0000000000000000))"
+ };
+
+static std::string buffer_rt_g[2] =
+ {
+ "POLYGON((2.0 8.0,2.0 9.0,2.0 10.0,3.0 10.0,4.0 10.0,6.4142135623730958 10.0,4.7071067811865479 8.2928932188134521,3.7071067811865475 7.2928932188134521,2.0 5.5857864376269051,2.0 8.0))",
+ "POLYGON((0.0 6.0,0.0 7.0,0.0 8.0,1.0 8.0,2.0 8.0,4.4142135623730958 8.0,2.7071067811865475 6.2928932188134521,1.7071067811865475 5.2928932188134521,-0.0 3.5857864376269042,0.0 6.0))"
+ };
+
+static std::string buffer_rt_g_boxes[5] =
+ {
+ "POLYGON((0 0,0 4,4 4,4 0,0 0))",
+ "POLYGON((2 2,2 4,6 4,6 2,2 2))",
+ "POLYGON((2 2,2 4,6 4,8 4,8 2,2 2))",
+ "POLYGON((2 2,2 4,6 4,6 6,8 6,8 2,2 2))",
+
+ "POLYGON((0 0,0 4,4 4,4 5,5 5,5 1,4 1,4 0,0 0))"
+ };
+
+// From buffer-robustness-test with segment-intersection "touching" with r ~ 1.16
+static std::string buffer_rt_i[2] =
+ {
+ "POLYGON((1.0 1.0,1.0 2.0,1.0 3.0,2.0 3.0,3.0 3.0,5.4142135623730949 3.0,3.7071067811865475 1.2928932188134525,2.7071067811865475 0.29289321881345254,1.0 -1.4142135623730949,1.0 1.0))",
+ "POLYGON((2.0 2.0,2.0 3.0,2.0 4.0,3.0 4.0,4.0 4.0,6.4142135623730958 4.0,4.7071067811865479 2.2928932188134525,3.7071067811865475 1.2928932188134525,2.0 -0.41421356237309387,2.0 2.0))"
+ };
+
+// Idem, but with a touch-in-the-middle
+static std::string buffer_rt_j[2] =
+ {
+ "POLYGON((1.0 4.0,1.0 5.0,1.0 6.0,2.0 6.0,3.0 6.0,5.4142135623730967 6.0,3.7071067811865475 4.2928932188134521,2.7071067811865475 3.2928932188134525,1.0 1.5857864376269055,1.0 4.0))",
+ "POLYGON((-1.0 2.0,-1.0 3.0,-1.0 4.0,0.00 4.0,1.0 4.0,3.4142135623730949 4.0,1.7071067811865475 2.2928932188134525,0.70710678118654746 1.2928932188134525,-1.0 -0.41421356237309492,-1.0 2.0))"
+ };
+
+// Nearly-collinear (two segments as-if meeting but not really)
+static std::string buffer_rt_l[2] =
+ {
+ "POLYGON((1.0 5.0,1.0 6.0,1.0 8.4142135623730958,2.7071067811865475 6.7071067811865479,3.7071067811865475 5.7071067811865479,5.4142135623730958 4.0,3.0 4.0,2.0 4.0,1.0 4.0,1.0 5.0))",
+ "POLYGON((5.0 1.0,5.0 2.0,5.0 4.4142135623730958,6.7071067811865479 2.7071067811865475,7.7071067811865479 1.7071067811865475,9.4142135623730958 0.00,7.0 0.0,6.0 0.0,5.0 0.0,5.0 1.0))"
+ };
+
+static std::string buffer_rt_m1[2] =
+ {
+ "POLYGON((3.0 2.0,3.0 3.0,3.0 5.4142135623730940,4.7071067811865479 3.7071067811865475,5.7071067811865479 2.7071067811865475,7.4142135623730940 1.0,5.0 1.0,4.0 1.0,3.0 1.0,3.0 2.0))",
+ "POLYGON((0.29289321881345254 2.7071067811865475,1.2928932188134525 3.7071067811865475,3.0 5.4142135623730949,3.0 3.0,3.0 2.0,3.0 1.0,2.0 1.0,1.0 1.0,-1.4142135623730949 1.0,0.29289321881345254 2.7071067811865475))"
+ };
+
+static std::string buffer_rt_m2[2] =
+ {
+ "POLYGON((-0.70710678118654746 3.7071067811865475,0.29289321881345254 4.7071067811865479,2.0 6.4142135623730967,2.0 4.0,2.0 3.0,2.0 2.0,1.0 2.0,0.00 2.0,-2.4142135623730949 2.0,-0.70710678118654746 3.7071067811865475))",
+ "POLYGON((2.2928932188134525 6.7071067811865479,3.2928932188134525 7.7071067811865479,5.0 9.4142135623730958,5.0 7.0,5.0 6.0,5.0 6.0,5.0 5.0,5.0 4.0,4.0 4.0,3.0 4.0,2.0 4.0,2.0 5.0,2.0 6.0,2.0 6.4142135623730958,2.2928932188134525 6.7071067811865479))"
+ };
+
+
+static std::string buffer_rt_n[2] =
+ {
+ "POLYGON((-0.70710678118654746 0.70710678118654746,0.29289321881345254 1.7071067811865475,2.0 3.4142135623730949,2.0 1.0,2.0 0.0,2.0 -1.0,1.0 -1.0,0.00 -1.0,-2.4142135623730949 -1.0,-0.70710678118654746 0.70710678118654746))",
+ "POLYGON((2.2928932188134525 3.7071067811865475,3.2928932188134525 4.7071067811865479,5.0 6.4142135623730958,5.0 4.0,5.0 3.0,5.0 2.0,4.0 2.0,3.0 2.0,0.58578643762690574 2.0,2.2928932188134525 3.7071067811865475))"
+ };
+
+static std::string buffer_rt_q[2] =
+ {
+ "POLYGON((6.0 6.0,7.0 6.0,9.4142135623730958 6.0,7.7071067811865479 4.2928932188134521,6.7071067811865479 3.2928932188134525,6.4142135623730949 3.0,6.0 3.0,5.0 3.0,4.0 3.0,4.0 4.0,4.0 5.0,4.0 6.0,5.0 6.0,6.0 6.0))",
+ "POLYGON((3.0 2.0,3.0 3.0,3.0 4.0,4.0 4.0,5.0 4.0,7.4142135623730958 4.0,5.7071067811865479 2.2928932188134525,4.7071067811865479 1.2928932188134525,3.0 -0.41421356237309581,3.0 2.0))"
+ };
+
+static std::string buffer_rt_r[2] =
+ {
+ "POLYGON((3.7071067811865475 0.29289321881345254,2.7071067811865475 -0.70710678118654746,2.0 -1.4142135623730949,1.2928932188134525 -0.70710678118654746,0.29289321881345254 0.29289321881345254,-0.41421356237309492 1.0,0.29289321881345254 1.7071067811865475,1.2928932188134525 2.7071067811865475,2.0000000000000004 3.4142135623730954,2.7071067811865475 2.7071067811865475,3.7071067811865475 1.7071067811865475,4.4142135623730958 1.0000000000000004,3.7071067811865475 0.29289321881345254))",
+ "POLYGON((5.7071067811865479 2.2928932188134525,4.7071067811865479 1.2928932188134525,4.4142135623730958 1.0,4.0 1.0,3.0 1.0,1.3819660112501053 1.0,2.1055728090000843 2.4472135954999579,3.1055728090000843 4.4472135954999583,3.7260485282911020 5.6881650340819956,4.7071067811865479 4.7071067811865479,5.7071067811865479 3.7071067811865475,6.4142135623730958 3.0,5.7071067811865479 2.2928932188134525))"
+ };
+
+
+static std::string buffer_rt_t[2] =
+ {
+ "POLYGON((0.00000000000000000 3.0,0.00000000000000000 4.0,0.00000000000000000 6.4142135623730958,1.7071067811865475 4.7071067811865479,2.7071067811865475 3.7071067811865475,4.4142135623730940 2.0,2.0 2.0,1.0 2.0,-0.00000000000000000 2.0,0.00000000000000000 3.0))",
+ "POLYGON((1.7071067811865475 3.2928932188134525,0.70710678118654746 2.2928932188134525,-1.0 0.58578643762690508,-1.0 3.0,-1.0 4.0,-1.0 4.0,-1.0 5.0,-1.0 7.4142135623730958,0.70710678118654746 5.7071067811865479,1.7071067811865475 4.7071067811865479,2.4142135623730954 4.0,1.7071067811865475 3.2928932188134525))"
+ };
+
#endif // BOOST_GEOMETRY_TEST_OVERLAY_CASES_HPP
diff --git a/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp b/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp
index 23f5c3a2c7..85729b1657 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp
+++ b/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp
@@ -31,6 +31,8 @@
#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+#include <boost/geometry/algorithms/intersects.hpp>
+#include <boost/geometry/algorithms/touches.hpp>
struct p_q_settings
{
@@ -103,6 +105,19 @@ static bool test_overlay_p_q(std::string const& caseid,
}
}
+ if (true)
+ {
+ if ((area_i > 0 && bg::touches(p, q))
+ || (area_i <= 0 && bg::intersects(p, q) && ! bg::touches(p, q)))
+ {
+ std::cout << "Wrong 'touch'! "
+ << " Intersection area: " << area_i
+ << " Touch gives: " << std::boolalpha << bg::touches(p, q)
+ << std::endl;
+ wrong = true;
+ }
+ }
+
bool svg = settings.svg;
if (wrong || settings.wkt)
diff --git a/libs/geometry/test/algorithms/overlay/traverse.cpp b/libs/geometry/test/algorithms/overlay/traverse.cpp
index 6444b8387e..cebd8b0009 100644
--- a/libs/geometry/test/algorithms/overlay/traverse.cpp
+++ b/libs/geometry/test/algorithms/overlay/traverse.cpp
@@ -7,6 +7,9 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
+#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
+// #define BOOST_GEOMETRY_OVERLAY_NO_THROW
+// #define TEST_WITH_SVG
#include <iostream>
#include <iomanip>
@@ -83,7 +86,7 @@ struct test_traverse
{
static void apply(std::string const& id,
- int expected_count, double expected_area,
+ std::size_t expected_count, double expected_area,
G1 const& g1, G2 const& g2,
double precision)
{
@@ -353,7 +356,7 @@ struct test_traverse
G1, G2, Direction, Reverse1, Reverse2
> detail_test_traverse;
- inline static void apply(std::string const& id, int expected_count, double expected_area,
+ inline static void apply(std::string const& id, std::size_t expected_count, double expected_area,
std::string const& wkt1, std::string const& wkt2,
double precision = 0.001)
{
@@ -823,22 +826,11 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
}
{
- // Note: values are checked with SQL Server,
- /*
- select geometry::STGeomFromText('POLYGON((...))', 0)
- .STIntersection(geometry::STGeomFromText('...))', 0))
- .STArea()
-
- and STUnion
- */
-
- // Boost.List during Formal Review, isovists Brandon
- // For FP, they may deviate more.
test_traverse<polygon, polygon, operation_intersection>::apply("isov",
- 1, 88.1920416352664, isovist[0], isovist[1],
+ 1, 88.1920, isovist[0], isovist[1],
float_might_deviate_more);
test_traverse<polygon, polygon, operation_union>::apply("isov",
- 1, 313.360374193241, isovist[0], isovist[1],
+ 1, 313.3604, isovist[0], isovist[1],
float_might_deviate_more);
}
@@ -907,6 +899,51 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
1, 67.3550722317627,
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1]);
}
+
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_f",
+ 1, 4.60853,
+ buffer_rt_f[0], buffer_rt_f[1]);
+ test_traverse<polygon, polygon, operation_intersection>::apply("buffer_rt_f",
+ 1, 0.0002943725152286,
+ buffer_rt_f[0], buffer_rt_f[1]);
+
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g",
+ 1, 16.571,
+ buffer_rt_g[0], buffer_rt_g[1]);
+
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes1",
+ 1, 20,
+ buffer_rt_g_boxes[0], buffer_rt_g_boxes[1]);
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes2",
+ 1, 24,
+ buffer_rt_g_boxes[0], buffer_rt_g_boxes[2]);
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes3",
+ 1, 28,
+ buffer_rt_g_boxes[0], buffer_rt_g_boxes[3]);
+
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes43",
+ 1, 30,
+ buffer_rt_g_boxes[4], buffer_rt_g_boxes[3]);
+
+#ifdef BOOST_GEOMETRY_OVERLAY_NO_THROW
+ {
+ // NOTE: currently throws (normally)
+ std::string caseid = "ggl_list_20120229_volker";
+ test_traverse<polygon, polygon, operation_union>::apply(caseid,
+ 1, 99,
+ ggl_list_20120229_volker[0], ggl_list_20120229_volker[1]);
+ test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
+ 1, 99,
+ ggl_list_20120229_volker[0], ggl_list_20120229_volker[1]);
+ caseid = "ggl_list_20120229_volker_2";
+ test_traverse<polygon, polygon, operation_union>::apply(caseid,
+ 1, 99,
+ ggl_list_20120229_volker[2], ggl_list_20120229_volker[1]);
+ test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
+ 1, 99,
+ ggl_list_20120229_volker[2], ggl_list_20120229_volker[1]);
+ }
+#endif
}
template <typename T>
diff --git a/libs/geometry/test/algorithms/test_touches.hpp b/libs/geometry/test/algorithms/test_touches.hpp
new file mode 100644
index 0000000000..aa88ea96d0
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_touches.hpp
@@ -0,0 +1,61 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Use, modification and distribution is 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)
+
+#ifndef BOOST_GEOMETRY_TEST_TOUCHES_HPP
+#define BOOST_GEOMETRY_TEST_TOUCHES_HPP
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/core/ring_type.hpp>
+#include <boost/geometry/algorithms/touches.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+
+
+template <typename Geometry1, typename Geometry2>
+void test_touches(std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+
+ bool detected = bg::touches(geometry1, geometry2);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "touches: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+}
+
+
+template <typename Geometry>
+void test_self_touches(std::string const& wkt, bool expected)
+{
+ Geometry geometry;
+
+ bg::read_wkt(wkt, geometry);
+
+ bool detected = bg::touches(geometry);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "touches: " << wkt
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+}
+
+
+
+#endif
diff --git a/libs/geometry/test/algorithms/test_union.hpp b/libs/geometry/test/algorithms/test_union.hpp
index 0f4a786d8e..ec4b0d10cb 100644
--- a/libs/geometry/test/algorithms/test_union.hpp
+++ b/libs/geometry/test/algorithms/test_union.hpp
@@ -38,7 +38,7 @@
template <typename OutputType, typename G1, typename G2>
void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
std::size_t expected_count, std::size_t expected_hole_count,
- std::size_t expected_point_count, double expected_area,
+ int expected_point_count, double expected_area,
double percentage)
{
typedef typename bg::coordinate_type<G1>::type coordinate_type;
@@ -90,13 +90,15 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
<< std::endl;
***/
- BOOST_CHECK_MESSAGE(std::size_t(n) == expected_point_count,
- "union: " << caseid
- << " #points expected: " << expected_point_count
- << " detected: " << n
- << " type: " << string_from_type<coordinate_type>::name()
- );
-
+ if (expected_point_count >= 0)
+ {
+ BOOST_CHECK_MESSAGE(n == std::size_t(expected_point_count),
+ "union: " << caseid
+ << " #points expected: " << expected_point_count
+ << " detected: " << n
+ << " type: " << string_from_type<coordinate_type>::name()
+ );
+ }
BOOST_CHECK_EQUAL(clip.size(), expected_count);
BOOST_CHECK_EQUAL(holes, expected_hole_count);
@@ -149,7 +151,7 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
template <typename OutputType, typename G1, typename G2>
void test_one(std::string const& caseid, std::string const& wkt1, std::string const& wkt2,
std::size_t expected_count, std::size_t expected_hole_count,
- std::size_t expected_point_count, double expected_area,
+ int expected_point_count, double expected_area,
double percentage = 0.001)
{
G1 g1;
diff --git a/libs/geometry/test/algorithms/touches.cpp b/libs/geometry/test/algorithms/touches.cpp
new file mode 100644
index 0000000000..84430d527e
--- /dev/null
+++ b/libs/geometry/test/algorithms/touches.cpp
@@ -0,0 +1,154 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Use, modification and distribution is 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 <algorithms/test_touches.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+
+
+template <typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P> polygon;
+
+ // Just a normal polygon
+ test_self_touches<polygon>("POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))", false);
+
+ // Self intersecting
+ test_self_touches<polygon>("POLYGON((1 2,1 1,2 1,2 2.25,3 2.25,3 0,0 0,0 3,3 3,2.75 2,1 2))", false);
+
+ // Self touching at a point
+ test_self_touches<polygon>("POLYGON((0 0,0 3,2 3,2 2,1 2,1 1,2 1,2 2,3 2,3 0,0 0))", true);
+
+ // Self touching at a segment
+ test_self_touches<polygon>("POLYGON((0 0,0 3,2 3,2 2,1 2,1 1,2 1,2 2.5,3 2.5,3 0,0 0))", true);
+
+ // Touching at corner
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((100 100,100 200,200 200, 200 100,100 100))",
+ true
+ );
+
+ // Intersecting at corner
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,101 101,100 0,0 0))",
+ "POLYGON((100 100,100 200,200 200, 200 100,100 100))",
+ false
+ );
+
+ // Touching at side (interior of a segment)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((200 0,100 50,200 100,200 0))",
+ true
+ );
+
+ // Touching at side (partly collinear)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((200 20,100 20,100 80,200 80,200 20))",
+ true
+ );
+
+ // Completely equal
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ false
+ );
+
+ // Spatially equal
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
+ false
+ );
+
+ // Spatially equal (without equal segments)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 50,0 100,50 100,100 100,100 50,100 0,50 0,0 0))",
+ false
+ );
+
+
+ // Touching at side (opposite equal)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((200 0,100 0,100 100,200 100,200 0))",
+ true
+ );
+
+ // Touching at side (opposite equal - but with real "equal" turning point)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
+ "POLYGON((200 0,100 0,100 20,100 80,100 100,200 100,200 0))",
+ true
+ );
+ // First partly collinear to side, than overlapping
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((200 20,100 20,100 50,50 50,50 80,100 80,200 80,200 20))",
+ false
+ );
+
+ // Touching interior (= no touch)
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((20 20,20 80,100 50,20 20))",
+ false
+ );
+
+ // Fitting in hole
+ test_touches<polygon, polygon>
+ (
+ "POLYGON((0 0,0 100,100 100,100 0,0 0),(40 40,60 40,60 60,40 60,40 40))",
+ "POLYGON((40 40,40 60,60 60,60 40,40 40))",
+ true
+ );
+
+}
+
+
+
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<double> >();
+
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
+
+/*
+with viewy as
+(
+select geometry::STGeomFromText('POLYGON((0 0,0 100,100 100,100 0,0 0))',0) as p
+ , geometry::STGeomFromText('POLYGON((200 0,100 50,200 100,200 0))',0) as q
+)
+-- select p from viewy union all select q from viewy
+select p.STTouches(q) from viewy
+*/ \ No newline at end of file
diff --git a/libs/geometry/test/algorithms/touches.vcproj b/libs/geometry/test/algorithms/touches.vcproj
new file mode 100644
index 0000000000..79cc17048a
--- /dev/null
+++ b/libs/geometry/test/algorithms/touches.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="touches"
+ ProjectGUID="{8359726E-9F03-4300-8F63-1FEAC84251D0}"
+ RootNamespace="touches"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\touches"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../..;.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
+ ExceptionHandling="2"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\touches"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../..;.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
+ ExceptionHandling="2"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\touches.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/union.cpp b/libs/geometry/test/algorithms/union.cpp
index 349b256f54..7a2083f3bd 100644
--- a/libs/geometry/test/algorithms/union.cpp
+++ b/libs/geometry/test/algorithms/union.cpp
@@ -15,6 +15,9 @@
#include <iostream>
#include <string>
+#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
+#define TEST_ISOVIST
+
//#define BOOST_GEOMETRY_DEBUG_ASSEMBLE
//#define BOOST_GEOMETRY_DEBUG_IDENTIFIER
@@ -229,24 +232,102 @@ void test_areal()
if_typed<ct, double>(5, if_typed_tt<ct>(8, 7)),
14729.07145);
-#ifdef TEST_ENRICO
test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
1, 1,
- if_typed<ct, double>(18, 17),
+ if_typed<ct, double>(18, if_typed<ct, float>(15, 17)),
129904.197692871);
-#endif
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20110820_christophe",
+ ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1],
+ if_typed<ct, float>(2, 1),
+ 0,
+ if_typed_tt<ct>(9, 8),
+ 67.3550722317627);
+
+
+#ifdef TEST_ISOVIST
#ifdef _MSC_VER
- // Isovist (submitted by Brandon during Formal Review)
test_one<Polygon, Polygon, Polygon>("isovist",
isovist1[0], isovist1[1],
1,
0,
- if_typed<ct, float>(71,
- if_typed<ct, double>(70, 73)),
- 313.36036462);
+ if_typed<ct, float>(71, if_typed<ct, double>(70, 73)),
+ 313.36036462, 0.1);
+
+ // SQL Server gives: 313.360374193241
+ // PostGIS gives: 313.360364623393
+
+#endif
#endif
+
+ // Ticket 5103 https://svn.boost.org/trac/boost/ticket/5103
+ // This ticket was actually reported for Boost.Polygon
+ // We check it for Boost.Geometry as well.
+ // SQL Server gives: 2515271331437.69
+ // PostGIS gives: 2515271327070.52
+ // Boost.Geometry gives: 2515271327070.5237746891 (ttmath)
+ // 2515271327070.5156 (double)
+ // 2515271320603.0000 (int)
+ // Note the int-test was tested outside of this unit test. It is in two points 0.37 off (logical for an int).
+ // Because of the width of the polygon (400000 meter) this causes a substantial difference.
+
+ test_one<Polygon, Polygon, Polygon>("ticket_5103", ticket_5103[0], ticket_5103[1],
+ 1, 0, 25, 2515271327070.5);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_a", buffer_rt_a[0], buffer_rt_a[1],
+ 1, 0, 265, 19.280667);
+
+ // Robustness issues, followed out buffer-robustness-tests, test them also reverse
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_f", buffer_rt_f[0], buffer_rt_f[1],
+ 1, 0, if_typed<ct, double>(22, 23), 4.60853);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_f_rev", buffer_rt_f[1], buffer_rt_f[0],
+ 1, 0, if_typed<ct, double>(22, 23), 4.60853);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_g", buffer_rt_g[0], buffer_rt_g[1],
+ 1, 0, 17, 16.571);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_g_rev", buffer_rt_g[1], buffer_rt_g[0],
+ 1, 0, 17, 16.571);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_i", buffer_rt_i[0], buffer_rt_i[1],
+ 1, 0, 13, 13.6569);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_i_rev", buffer_rt_i[1], buffer_rt_i[0],
+ 1, 0, 13, 13.6569);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_j", buffer_rt_j[0], buffer_rt_j[1],
+ 1, 0, -1, 16.5711);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_j_rev", buffer_rt_j[1], buffer_rt_j[0],
+ 1, 0, -1, 16.5711);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_l", buffer_rt_l[0], buffer_rt_l[1],
+ 1, 0, -1, 19.3995);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_l_rev", buffer_rt_l[1], buffer_rt_l[0],
+ 1, 0, -1, 19.3995);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_m1", buffer_rt_m1[0], buffer_rt_m1[1],
+ 1, 0, if_typed_tt<ct>(14, 13), 19.4852);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_m1_rev", buffer_rt_m1[1], buffer_rt_m1[0],
+ 1, 0, if_typed_tt<ct>(14, 13), 19.4852);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_m2", buffer_rt_m2[0], buffer_rt_m2[1],
+ 1, 0, if_typed_tt<ct>(20, 19), 21.4853);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_m2_rev", buffer_rt_m2[1], buffer_rt_m2[0],
+ 1, 0, if_typed_tt<ct>(20, 19), 21.4853);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_q", buffer_rt_q[0], buffer_rt_q[1],
+ 1, 0, if_typed<ct, float>(18, 17), 18.5710);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_q_rev", buffer_rt_q[1], buffer_rt_q[0],
+ 1, 0, if_typed<ct, float>(18, 17), 18.5710);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_r", buffer_rt_r[0], buffer_rt_r[1],
+ 1, 0, if_typed<ct, float>(19, 20), 21.07612);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_r_rev", buffer_rt_r[1], buffer_rt_r[0],
+ 1, 0, if_typed_tt<ct>(20, 19), 21.07612);
+
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_t", buffer_rt_t[0], buffer_rt_t[1],
+ 1, 0, if_typed_tt<ct>(16, 14), 15.6569);
+ test_one<Polygon, Polygon, Polygon>("buffer_rt_t_ref", buffer_rt_t[1], buffer_rt_t[0],
+ 1, 0, if_typed_tt<ct>(16, 14), 15.6569);
}
template <typename P>
@@ -258,6 +339,7 @@ void test_all()
test_areal<ring, polygon>();
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
// Open
test_areal<bg::model::ring<P, true, false>, bg::model::polygon<P, true, false> >();
@@ -266,6 +348,7 @@ void test_all()
// Counter clockwise and open
test_areal<bg::model::ring<P, false, false>, bg::model::polygon<P, false, false> >();
+#endif
test_one<polygon, box, polygon>("box_ring", example_box, example_ring,
1, 1, 15, 6.38875);
@@ -302,32 +385,23 @@ void test_all()
test_one<polygon, box, polygon>("box_poly8", "box(0 0, 3 3)",
"POLYGON((2 2, 1 4, 2 4, 3 3, 2 2))",
1, 0, 8, 10.25);
-
- // Ticket 5103 https://svn.boost.org/trac/boost/ticket/5103
- // This ticket was actually reported for Boost.Polygon
- // but it is apparently a difficult case so we check it for Boost.Geometry as well.
- // SQL Server gives: 2515271331437.69
- // PostGIS gives: 2515271327070.52
- // Boost.Geometry gives: 2515271327070.5237746891 (ttmath)
- // 2515271327070.5156 (double)
- // 2515271320603.0000 (int)
- // Note the int-test was tested externally - it is in two points 0.37 off (makes sense).
- // Because of the width of the polygon (400000 meter) this might indeed cause a substantial difference.
-
- test_one<polygon, polygon, polygon>("ticket_5103", ticket_5103[0], ticket_5103[1],
- 1, 0, 25, 2515271327070.5);
}
int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<double> >();
+#if defined(HAVE_TTMATH)
+ std::cout << "Testing TTMATH" << std::endl;
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<bg::model::d2::point_xy<float> >();
//test_all<bg::model::d2::point_xy<long double> >();
#if defined(HAVE_TTMATH)
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
#endif
diff --git a/libs/geometry/test/core/ring.cpp b/libs/geometry/test/core/ring.cpp
index f95f6ee413..f2c3ac4cba 100644
--- a/libs/geometry/test/core/ring.cpp
+++ b/libs/geometry/test/core/ring.cpp
@@ -34,9 +34,9 @@
template <typename P>
void test_ring(std::string const& wkt,
- int expected_main_count,
- int expected_interior_ring_count,
- int expected_first_interior_count)
+ std::size_t expected_main_count,
+ std::size_t expected_interior_ring_count,
+ std::size_t expected_first_interior_count)
{
typedef bg::model::polygon<P> the_polygon;
typedef typename bg::ring_type<the_polygon>::type the_ring;
@@ -48,7 +48,7 @@ void test_ring(std::string const& wkt,
the_ring ext = bg::exterior_ring(poly);
the_interior rings = bg::interior_rings(poly);
- BOOST_CHECK_EQUAL(bg::num_interior_rings(poly), std::size_t(expected_interior_ring_count));
+ BOOST_CHECK_EQUAL(bg::num_interior_rings(poly), expected_interior_ring_count);
BOOST_CHECK_EQUAL(boost::size(rings), expected_interior_ring_count);
BOOST_CHECK_EQUAL(boost::size(ext), expected_main_count);
if (boost::size(rings))
diff --git a/libs/geometry/test/geometries/adapted.cpp b/libs/geometry/test/geometries/adapted.cpp
index f1e7ed3a9e..3ba47ef728 100644
--- a/libs/geometry/test/geometries/adapted.cpp
+++ b/libs/geometry/test/geometries/adapted.cpp
@@ -58,7 +58,7 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
// ----------------------------------------------------------------------------
template <typename G>
-void test_geometry(G const& geometry, int expected_size = 0)
+void test_geometry(G const& geometry, std::size_t expected_size = 0)
{
#if defined(BOOST_GEOMETRY_TEST_RING)
BOOST_CONCEPT_ASSERT( (bg::concept::ConstRing<G>) );
diff --git a/libs/geometry/test/geometries/custom_linestring.cpp b/libs/geometry/test/geometries/custom_linestring.cpp
index 303e5f083b..ef2bad43ad 100644
--- a/libs/geometry/test/geometries/custom_linestring.cpp
+++ b/libs/geometry/test/geometries/custom_linestring.cpp
@@ -87,15 +87,15 @@ void test_linestring()
typedef typename bg::point_type<G>::type P;
bg::clear(geometry);
- BOOST_CHECK_EQUAL(boost::size(geometry), 0);
+ BOOST_CHECK_EQUAL(boost::size(geometry), 0u);
bg::append(geometry, bg::make_zero<P>());
- BOOST_CHECK_EQUAL(boost::size(geometry), 1);
+ BOOST_CHECK_EQUAL(boost::size(geometry), 1u);
//std::cout << geometry << std::endl;
bg::clear(geometry);
- BOOST_CHECK_EQUAL(boost::size(geometry), 0);
+ BOOST_CHECK_EQUAL(boost::size(geometry), 0u);
//P p = boost::range::front(geometry);
diff --git a/libs/geometry/test/multi/algorithms/Jamfile.v2 b/libs/geometry/test/multi/algorithms/Jamfile.v2
index b0ea72667d..813d6aafa0 100644
--- a/libs/geometry/test/multi/algorithms/Jamfile.v2
+++ b/libs/geometry/test/multi/algorithms/Jamfile.v2
@@ -17,6 +17,7 @@ test-suite boost-geometry-multi-algorithms
[ run multi_correct.cpp ]
[ run multi_covered_by.cpp ]
[ run multi_difference.cpp ]
+ [ run multi_disjoint.cpp ]
[ run multi_distance.cpp ]
[ run multi_envelope.cpp ]
[ run multi_equals.cpp ]
@@ -29,6 +30,7 @@ test-suite boost-geometry-multi-algorithms
[ run multi_perimeter.cpp ]
[ run multi_reverse.cpp ]
[ run multi_simplify.cpp ]
+ [ run multi_touches.cpp ]
[ run multi_transform.cpp ]
[ run multi_union.cpp ]
[ run multi_unique.cpp ]
diff --git a/libs/geometry/test/multi/algorithms/multi_difference.cpp b/libs/geometry/test/multi/algorithms/multi_difference.cpp
index 7bf3701e99..e5e47bc5c0 100644
--- a/libs/geometry/test/multi/algorithms/multi_difference.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_difference.cpp
@@ -13,6 +13,11 @@
// #define BOOST_GEOMETRY_DEBUG_ASSEMBLE
//#define BOOST_GEOMETRY_CHECK_WITH_SQLSERVER
+//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+//#define BOOST_GEOMETRY_DEBUG_FOLLOW
+//#define BOOST_GEOMETRY_DEBUG_TRAVERSE
+
+
#include <algorithms/test_difference.hpp>
#include <algorithms/test_overlay.hpp>
#include <multi/algorithms/overlay/multi_overlay_cases.hpp>
@@ -163,6 +168,13 @@ void test_areal_linear()
test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_3",
"LINESTRING(6 6,6 7,7 7,7 6,8 6,8 7,9 7,9 6)",
"MULTIPOLYGON(((5 7,5 8,6 8,6 7,5 7)),((6 6,6 7,7 7,7 6,6 6)),((8 8,9 8,9 7,8 7,7 7,7 8,8 8)))", 2, 5, 3.0);
+
+ return;
+
+ // TODO: this case contains collinearities and should still be solved
+ test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_4",
+ "LINESTRING(0 5,0 6,1 6,1 5,2 5,2 6,3 6,3 5,3 4,3 3,2 3,2 4,1 4,1 3,0 3,0 4)",
+ "MULTIPOLYGON(((0 2,0 3,1 2,0 2)),((2 5,3 6,3 5,2 5)),((1 5,1 6,2 6,2 5,1 5)),((2 3,2 4,3 4,2 3)),((0 3,1 4,1 3,0 3)),((4 3,3 3,3 5,4 5,4 4,4 3)))", 5, 11, 6.0);
}
@@ -183,6 +195,7 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<double> >();
#ifdef HAVE_TTMATH
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
diff --git a/libs/geometry/test/multi/algorithms/multi_disjoint.cpp b/libs/geometry/test/multi/algorithms/multi_disjoint.cpp
new file mode 100644
index 0000000000..a1b88ce213
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_disjoint.cpp
@@ -0,0 +1,123 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// Use, modification and distribution is 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 <iostream>
+#include <string>
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/disjoint.hpp>
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp>
+#include <boost/geometry/multi/algorithms/detail/point_on_border.hpp>
+#include <boost/geometry/multi/algorithms/detail/for_each_range.hpp>
+#include <boost/geometry/multi/algorithms/within.hpp>
+#include <boost/geometry/multi/core/closure.hpp>
+#include <boost/geometry/multi/core/geometry_id.hpp>
+#include <boost/geometry/multi/core/ring_type.hpp>
+#include <boost/geometry/multi/views/detail/range_type.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <test_common/test_point.hpp>
+
+#include <algorithms/test_relate.hpp>
+
+
+template <typename G1, typename G2>
+void test_disjoint(std::string const& id,
+ std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ G1 g1;
+ bg::read_wkt(wkt1, g1);
+
+ G2 g2;
+ bg::read_wkt(wkt2, g2);
+
+ bool detected = bg::disjoint(g1, g2);
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "disjoint: " << id
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+}
+
+
+
+template <typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::multi_polygon<polygon> mp;
+
+ test_disjoint<mp, mp>("",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ false);
+
+ // True disjoint
+ test_disjoint<mp, mp>("",
+ "MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0)))",
+ "MULTIPOLYGON(((6 6,6 10,10 10,10 6,6 6)))",
+ true);
+
+ // Touch -> not disjoint
+ test_disjoint<mp, mp>("",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)))",
+ "MULTIPOLYGON(((5 5,5 10,10 10,10 5,5 5)))",
+ false);
+
+ // Not disjoint but no IP's
+ test_disjoint<mp, mp>("no_ips",
+ "MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((22 2,28 2,28 8,22 8,22 2)))",
+ false);
+
+ // Not disjoint and not inside each other (in first ring) but wrapped (in second rings)
+ test_disjoint<mp, mp>("no_ips2",
+ "MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))",
+ false);
+
+ test_disjoint<mp, mp>("no_ips2_rev",
+ "MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))",
+ "MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
+ false);
+}
+
+int test_main(int, char* [])
+{
+ //test_all<bg::model::d2::point_xy<float> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
+
+
+/*
+with viewy as
+(
+select geometry::STGeomFromText('MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))',0) as p
+ , geometry::STGeomFromText('MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))',0) as q
+)
+ select p from viewy union all select q from viewy
+-- select p.STDisjoint(q) from viewy
+*/ \ No newline at end of file
diff --git a/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj b/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj
new file mode 100644
index 0000000000..fb55ab3259
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="multi_disjoint"
+ ProjectGUID="{5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}"
+ RootNamespace="multi_disjoint"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_disjoint"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../..;../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_disjoint"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../..;../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\multi_disjoint.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_intersection.cpp b/libs/geometry/test/multi/algorithms/multi_intersection.cpp
index c6a0efcede..d479f5d115 100644
--- a/libs/geometry/test/multi/algorithms/multi_intersection.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_intersection.cpp
@@ -212,6 +212,7 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<double> >();
#ifdef HAVE_TTMATH
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
diff --git a/libs/geometry/test/multi/algorithms/multi_touches.cpp b/libs/geometry/test/multi/algorithms/multi_touches.cpp
new file mode 100644
index 0000000000..0186c62e30
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_touches.cpp
@@ -0,0 +1,80 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Use, modification and distribution is 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 <algorithms/test_touches.hpp>
+
+#include <boost/geometry/multi/algorithms/area.hpp>
+#include <boost/geometry/multi/algorithms/num_geometries.hpp>
+#include <boost/geometry/multi/algorithms/within.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp>
+#include <boost/geometry/multi/algorithms/detail/for_each_range.hpp>
+#include <boost/geometry/multi/core/closure.hpp>
+#include <boost/geometry/multi/core/geometry_id.hpp>
+#include <boost/geometry/multi/core/ring_type.hpp>
+#include <boost/geometry/multi/views/detail/range_type.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+
+
+template <typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::multi_polygon<polygon> mp;
+
+ test_self_touches<mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+ false);
+
+ // Exactly equal
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+ "MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+ false);
+
+ // Spatially equal
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+ "MULTIPOLYGON(((0 0,0 100,100 100,100 80,100 20,100 0,0 0)))",
+ false);
+
+ // One exactly equal, another pair touching
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((30 10,30 20,40 20,40 10,30 10)))",
+ false);
+
+ // One spatially equal (without equal segments), another pair touching
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 5,0 10,5 10,10 10,10 5,10 0,5 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((30 10,30 20,40 20,40 10,30 10)))",
+ false);
+
+ // Alternate touches
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((10 10,10 20,20 20,20 10,10 10)),((30 10,30 20,40 20,40 10,30 10)))",
+ true);
+
+ // Touch plus inside
+ // TODO fix this
+ test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTIPOLYGON(((10 10,10 20,20 20,20 10,10 10)),((22 2,28 2,28 8,22 8,22 2)))",
+ false);
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/multi/algorithms/multi_touches.vcproj b/libs/geometry/test/multi/algorithms/multi_touches.vcproj
new file mode 100644
index 0000000000..05468f6cde
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_touches.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="multi_touches"
+ ProjectGUID="{108173B8-B6F4-4366-8018-2BF282ED4881}"
+ RootNamespace="multi_touches"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_touches"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../..;../..;."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_touches"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../..;../..;."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\multi_touches.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_union.cpp b/libs/geometry/test/multi/algorithms/multi_union.cpp
index e06306254d..ffa694291a 100644
--- a/libs/geometry/test/multi/algorithms/multi_union.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_union.cpp
@@ -105,7 +105,7 @@ void test_areal()
1, 0, 14, 100.0); // Area from SQL Server
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_3",
case_recursive_boxes_3[0], case_recursive_boxes_3[1],
- 18, 0, 160, 56.5); // Area from SQL Server
+ 17, 0, 159, 56.5); // Area from SQL Server
}
template <typename P>
@@ -134,6 +134,7 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<double> >();
#ifdef HAVE_TTMATH
+ std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
index 6c58171042..536aa09531 100644
--- a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
+++ b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
@@ -293,7 +293,7 @@ static std::string case_100_multi[2] =
{
// for intersection
"MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((2 2,2 1,0 1,0 2,1 2,2 3,2 2)))",
- "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((1 2,0 1,0 3,1 4,1 2))))"
+ "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((1 2,0 1,0 3,1 4,1 2)))"
};
static std::string case_101_multi[2] =
diff --git a/libs/geometry/test/multi/io/wkt/wkt.cpp b/libs/geometry/test/multi/io/wkt/wkt.cpp
index 55476d7059..a149946cf5 100644
--- a/libs/geometry/test/multi/io/wkt/wkt.cpp
+++ b/libs/geometry/test/multi/io/wkt/wkt.cpp
@@ -55,9 +55,30 @@ void test_all()
test_wkt<bg::model::multi_linestring<bg::model::linestring<P> > >("multilinestring((1 1,2 2,3 3),(4 4,5 5,6 6))", 6, 4 * sqrt(2.0));
test_wkt<bg::model::multi_polygon<bg::model::polygon<P> > >("multipolygon(((0 0,0 2,2 2,2 0,0 0),(1 1,1 2,2 2,2 1,1 1)),((0 0,0 4,4 4,4 0,0 0)))", 15, 0, 21, 28);
+ // Support for the official alternative syntax for multipoint
+ // (provided by Aleksey Tulinov):
+ test_relaxed_wkt<bg::model::multi_point<P> >("multipoint(1 2,3 4)", "multipoint((1 2),(3 4))");
+
test_wrong_wkt<bg::model::multi_polygon<bg::model::polygon<P> > >(
"MULTIPOLYGON(((0 0,0 2,2 2,2 0,0 0),(1 1,1 2,2 2,2 1,1 1)),(0 0,0 4,4 4,4 0,0 0)))",
"expected '('");
+
+ test_wrong_wkt<bg::model::multi_linestring<bg::model::linestring<P> > >(
+ "MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)), (0 0, 1 1)",
+ "too much tokens at ','");
+
+ test_wrong_wkt<bg::model::multi_point<P> >(
+ "MULTIPOINT((8 9), 10 11)",
+ "expected '(' at '10'");
+ test_wrong_wkt<bg::model::multi_point<P> >(
+ "MULTIPOINT(12 13, (14 15))",
+ "bad lexical cast: source type value could not be interpreted as target at '(' in 'multipoint(12 13, (14 15))'");
+ test_wrong_wkt<bg::model::multi_point<P> >(
+ "MULTIPOINT((16 17), (18 19)",
+ "expected ')' in 'multipoint((16 17), (18 19)'");
+ test_wrong_wkt<bg::model::multi_point<P> >(
+ "MULTIPOINT(16 17), (18 19)",
+ "too much tokens at ',' in 'multipoint(16 17), (18 19)'");
}
/*
diff --git a/libs/geometry/test/multi/io/wkt/wkt.vcproj b/libs/geometry/test/multi/io/wkt/wkt.vcproj
index 19cc3e4263..c8150e8534 100644
--- a/libs/geometry/test/multi/io/wkt/wkt.vcproj
+++ b/libs/geometry/test/multi/io/wkt/wkt.vcproj
@@ -20,7 +20,7 @@
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\wkt"
ConfigurationType="1"
- InheritedPropertySheets="..\..\..\..\boost.vsprops"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
CharacterSet="1"
>
<Tool
@@ -41,7 +41,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="../../../../../../..;../../../.."
+ AdditionalIncludeDirectories="../../../../../..;../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
ExceptionHandling="2"
RuntimeLibrary="1"
@@ -93,7 +93,7 @@
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\wkt"
ConfigurationType="1"
- InheritedPropertySheets="..\..\..\..\boost.vsprops"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
@@ -114,7 +114,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../../..;../../../.."
+ AdditionalIncludeDirectories="../../../../../..;../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
ExceptionHandling="2"
UsePrecompiledHeader="0"
diff --git a/libs/geometry/test/multi/multi_tests.sln b/libs/geometry/test/multi/multi_tests.sln
index 57d180722e..abfef0161f 100644
--- a/libs/geometry/test/multi/multi_tests.sln
+++ b/libs/geometry/test/multi/multi_tests.sln
@@ -46,6 +46,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_covered_by", "algorit
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_convert", "algorithms\multi_convert.vcproj", "{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_disjoint", "algorithms\multi_disjoint.vcproj", "{5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_touches", "algorithms\multi_touches.vcproj", "{108173B8-B6F4-4366-8018-2BF282ED4881}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -144,6 +148,14 @@ Global
{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Debug|Win32.Build.0 = Debug|Win32
{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Release|Win32.ActiveCfg = Release|Win32
{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Release|Win32.Build.0 = Release|Win32
+ {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Debug|Win32.Build.0 = Debug|Win32
+ {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.ActiveCfg = Release|Win32
+ {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.Build.0 = Release|Win32
+ {108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.ActiveCfg = Debug|Win32
+ {108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.Build.0 = Debug|Win32
+ {108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.ActiveCfg = Release|Win32
+ {108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/libs/geometry/test/robustness/common/common_settings.hpp b/libs/geometry/test/robustness/common/common_settings.hpp
new file mode 100644
index 0000000000..050f5367f7
--- /dev/null
+++ b/libs/geometry/test/robustness/common/common_settings.hpp
@@ -0,0 +1,32 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Robustness Test
+//
+// Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Use, modification and distribution is 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)
+
+#ifndef BOOST_GEOMETRY_COMMON_SETTINGS_HPP
+#define BOOST_GEOMETRY_COMMON_SETTINGS_HPP
+
+struct common_settings
+{
+ bool svg;
+ bool wkt;
+ bool also_difference;
+ double tolerance;
+
+ int field_size;
+ bool triangular;
+
+ common_settings()
+ : svg(false)
+ , wkt(false)
+ , also_difference(false)
+ , tolerance(1.0e-6)
+ , field_size(10)
+ , triangular(false)
+ {}
+};
+
+#endif // BOOST_GEOMETRY_COMMON_SETTINGS_HPP
diff --git a/libs/geometry/test/robustness/common/make_square_polygon.hpp b/libs/geometry/test/robustness/common/make_square_polygon.hpp
new file mode 100644
index 0000000000..764fc4bb80
--- /dev/null
+++ b/libs/geometry/test/robustness/common/make_square_polygon.hpp
@@ -0,0 +1,46 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Robustness Test
+//
+// Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Use, modification and distribution is 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)
+
+#ifndef BOOST_GEOMETRY_TEST_ROBUSTNESS_MAKE_SQUARE_POLYGON_HPP
+#define BOOST_GEOMETRY_TEST_ROBUSTNESS_MAKE_SQUARE_POLYGON_HPP
+
+#include <boost/geometry.hpp>
+
+template <typename Polygon, typename Generator, typename Settings>
+inline void make_square_polygon(Polygon& polygon, Generator& generator, Settings const& settings)
+{
+ using namespace boost::geometry;
+
+ typedef typename point_type<Polygon>::type point_type;
+ typedef typename coordinate_type<Polygon>::type coordinate_type;
+
+ coordinate_type x, y;
+ x = generator();
+ y = generator();
+
+ typename ring_type<Polygon>::type& ring = exterior_ring(polygon);
+
+ point_type p;
+ set<0>(p, x); set<1>(p, y); append(ring, p);
+ set<0>(p, x); set<1>(p, y + 1); append(ring, p);
+ set<0>(p, x + 1); set<1>(p, y + 1); append(ring, p);
+ set<0>(p, x + 1); set<1>(p, y); append(ring, p);
+ set<0>(p, x); set<1>(p, y); append(ring, p);
+
+ if (settings.triangular)
+ {
+ // Remove a point, generator says which
+ int c = generator() % 4;
+ if (c >= 1 && c <= 3)
+ {
+ ring.erase(ring.begin() + c);
+ }
+ }
+}
+
+#endif // BOOST_GEOMETRY_TEST_ROBUSTNESS_MAKE_SQUARE_POLYGON_HPP
diff --git a/libs/geometry/test/robustness/convex_hull/Jamfile.v2 b/libs/geometry/test/robustness/convex_hull/Jamfile.v2
new file mode 100644
index 0000000000..20521d5487
--- /dev/null
+++ b/libs/geometry/test/robustness/convex_hull/Jamfile.v2
@@ -0,0 +1,18 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+# Robustness Test - convex_hull
+#
+# Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+# Use, modification and distribution is 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)
+
+
+project random_multi_points
+ : requirements
+ <include>.
+ <library>../../../../program_options/build//boost_program_options
+ <link>static
+ ;
+
+exe random_multi_points : random_multi_points.cpp ;
diff --git a/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp b/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
index 9ce4e406c4..90ea7e2cd4 100644
--- a/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
+++ b/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
@@ -1,5 +1,5 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Robustness Test
+// Robustness Test - convex_hull
// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/robustness/overlay/buffer/Jamfile.v2 b/libs/geometry/test/robustness/overlay/buffer/Jamfile.v2
new file mode 100644
index 0000000000..f724fcf8c6
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/buffer/Jamfile.v2
@@ -0,0 +1,19 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+# Robustness Test - overlay - buffer
+#
+# Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+# Use, modification and distribution is 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)
+
+
+project recursive_polygons_buffer
+ : requirements
+ <include>.
+ <include>../..
+ <library>../../../../../program_options/build//boost_program_options
+ <link>static
+ ;
+
+exe recursive_polygons_buffer : recursive_polygons_buffer.cpp ;
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp
new file mode 100644
index 0000000000..e54260f3be
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp
@@ -0,0 +1,352 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Robustness Test
+
+// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// Use, modification and distribution is 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)
+
+#if defined(_MSC_VER)
+# pragma warning( disable : 4244 )
+# pragma warning( disable : 4267 )
+#endif
+
+#include <fstream>
+#include <sstream>
+
+#include <boost/foreach.hpp>
+#include <boost/program_options.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/random/variate_generator.hpp>
+#include <boost/timer.hpp>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/extensions/algorithms/midpoints.hpp>
+
+#include <boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp>
+
+#include <boost/geometry/multi/multi.hpp> // TODO: more specific
+#include <boost/geometry/extensions/algorithms/buffer/multi_buffer_inserter.hpp>
+
+#include <boost/geometry/extensions/strategies/buffer.hpp>
+
+
+#include <common/common_settings.hpp>
+#include <common/make_square_polygon.hpp>
+
+
+struct buffer_settings : public common_settings
+{
+ int join_code;
+ double distance;
+};
+
+namespace bg = boost::geometry;
+
+template <typename Geometry1, typename Geometry2>
+void create_svg(std::string const& filename
+ , Geometry1 const& mp
+ , Geometry2 const& buffer
+ )
+{
+ typedef typename boost::geometry::point_type<Geometry1>::type point_type;
+
+
+ std::ofstream svg(filename.c_str());
+ boost::geometry::svg_mapper<point_type> mapper(svg, 800, 800);
+
+ boost::geometry::model::box<point_type> box;
+ bg::envelope(mp, box);
+ bg::buffer(box, box, 1.0);
+ mapper.add(box);
+
+ if (bg::num_points(buffer) > 0)
+ {
+ bg::envelope(buffer, box);
+ bg::buffer(box, box, 1.0);
+ mapper.add(box);
+ }
+
+ mapper.map(mp, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:3");
+ mapper.map(buffer, "stroke-opacity:0.9;stroke:rgb(0,0,0);fill:none;stroke-width:1");
+
+ //mapper.map(intersection,"opacity:0.6;stroke:rgb(0,128,0);stroke-width:5");
+}
+
+
+
+
+template <typename MultiPolygon, typename Settings>
+bool verify(std::string const& caseid, MultiPolygon const& mp, MultiPolygon const& buffer, Settings const& settings)
+{
+ bool result = true;
+
+ // Area of buffer must be larger than of original polygon
+ BOOST_AUTO(area_mp, bg::area(mp));
+ BOOST_AUTO(area_buf, bg::area(buffer));
+
+ if (area_buf < area_mp)
+ {
+ result = false;
+ }
+
+ if (result)
+ {
+ typedef boost::range_value<MultiPolygon const>::type polygon_type;
+ BOOST_FOREACH(polygon_type const& polygon, mp)
+ {
+ typename bg::point_type<polygon_type>::type point;
+ bg::point_on_border(point, polygon);
+ if (! bg::within(point, buffer))
+ {
+ result = false;
+ }
+ }
+ }
+
+ bool svg = settings.svg;
+ bool wkt = settings.wkt;
+ if (! result)
+ {
+ std::cout << "ERROR " << caseid << std::endl;
+ //std::cout << bg::wkt(mp) << std::endl;
+ //std::cout << bg::wkt(buffer) << std::endl;
+ svg = true;
+ wkt = true;
+ }
+
+ if (svg || wkt)
+ {
+ //std::cout << caseid << std::endl;
+ }
+
+ if (svg)
+ {
+ std::ostringstream filename;
+ filename << caseid << "_"
+ << typeid(typename bg::coordinate_type<MultiPolygon>::type).name()
+ << ".svg";
+ create_svg(filename.str(), mp, buffer);
+ }
+
+ if (wkt)
+ {
+ std::ostringstream filename;
+ filename << caseid << "_"
+ << typeid(typename bg::coordinate_type<MultiPolygon>::type).name()
+ << ".wkt";
+ std::ofstream stream(filename.str().c_str());
+ stream << bg::wkt(mp) << std::endl;
+ stream << bg::wkt(buffer) << std::endl;
+ }
+
+ return result;
+}
+
+template <typename MultiPolygon, typename Generator, typename Settings>
+bool test_buffer(MultiPolygon& result, int& index,
+ Generator& generator,
+ int level, Settings const& settings)
+{
+ MultiPolygon p, q;
+
+ // Generate two boxes
+ if (level == 0)
+ {
+ p.resize(1);
+ q.resize(1);
+ make_square_polygon(p.front(), generator, settings);
+ make_square_polygon(q.front(), generator, settings);
+ bg::correct(p);
+ bg::correct(q);
+ }
+ else
+ {
+ bg::correct(p);
+ bg::correct(q);
+ if (! test_buffer(p, index, generator, level - 1, settings)
+ || ! test_buffer(q, index, generator, level - 1, settings))
+ {
+ return false;
+ }
+ }
+
+ typedef typename boost::range_value<MultiPolygon>::type polygon;
+
+ MultiPolygon mp;
+ bg::detail::union_::union_insert
+ <
+ polygon
+ >(p, q, std::back_inserter(mp));
+
+ bg::unique(mp);
+ bg::unique(mp);
+ bg::correct(mp);
+ result = mp;
+
+
+ typedef typename bg::coordinate_type<MultiPolygon>::type coordinate_type;
+ typedef typename bg::point_type<MultiPolygon>::type point_type;
+ typedef bg::strategy::buffer::distance_assymetric<coordinate_type> distance_strategy_type;
+ distance_strategy_type distance_strategy(settings.distance, settings.distance);
+
+ typedef bg::strategy::buffer::join_round<point_type, point_type> join_strategy_type;
+ join_strategy_type join_strategy;
+
+ typedef typename boost::range_value<MultiPolygon>::type polygon_type;
+ MultiPolygon buffered;
+
+ std::ostringstream out;
+ out << "recursive_polygons_buffer_" << index++ << "_" << level;
+
+ try
+ {
+ switch(settings.join_code)
+ {
+ case 1 :
+ bg::buffer_inserter<polygon_type>(mp, std::back_inserter(buffered),
+ distance_strategy,
+ bg::strategy::buffer::join_round<point_type, point_type>());
+ break;
+ case 2 :
+ bg::buffer_inserter<polygon_type>(mp, std::back_inserter(buffered),
+ distance_strategy,
+ bg::strategy::buffer::join_miter<point_type, point_type>());
+ break;
+ default :
+ return false;
+ }
+ }
+ catch(std::exception const& e)
+ {
+ MultiPolygon empty;
+ std::cout << out.str() << std::endl;
+ std::cout << "Exception " << e.what() << std::endl;
+ verify(out.str(), mp, empty, settings);
+ return false;
+ }
+
+
+ return verify(out.str(), mp, buffered, settings);
+}
+
+
+template <typename T, bool Clockwise, bool Closed, typename Settings>
+void test_all(int seed, int count, int level, Settings const& settings)
+{
+ boost::timer t;
+
+ typedef boost::minstd_rand base_generator_type;
+
+ base_generator_type generator(seed);
+
+ boost::uniform_int<> random_coordinate(0, settings.field_size - 1);
+ boost::variate_generator<base_generator_type&, boost::uniform_int<> >
+ coordinate_generator(generator, random_coordinate);
+
+ typedef bg::model::polygon
+ <
+ bg::model::d2::point_xy<T>, Clockwise, Closed
+ > polygon;
+ typedef bg::model::multi_polygon<polygon> mp;
+
+
+ int index = 0;
+ for(int i = 0; i < count; i++)
+ {
+ mp p;
+ test_buffer<mp>(p, index, coordinate_generator, level, settings);
+ }
+ std::cout
+ << "geometries: " << index
+ << " type: " << typeid(T).name()
+ << " time: " << t.elapsed() << std::endl;
+}
+
+int main(int argc, char** argv)
+{
+ try
+ {
+ namespace po = boost::program_options;
+ po::options_description description("=== recursive_polygons_linear_areal ===\nAllowed options");
+
+ int count = 1;
+ int seed = static_cast<unsigned int>(std::time(0));
+ int level = 3;
+ bool ccw = false;
+ bool open = false;
+ buffer_settings settings;
+ std::string form = "box";
+ std::string join = "round";
+
+ description.add_options()
+ ("help", "Help message")
+ ("seed", po::value<int>(&seed), "Initialization seed for random generator")
+ ("count", po::value<int>(&count)->default_value(1), "Number of tests")
+ ("level", po::value<int>(&level)->default_value(3), "Level to reach (higher->slower)")
+ ("distance", po::value<double>(&settings.distance)->default_value(1.0), "Distance (1.0)")
+ ("form", po::value<std::string>(&form)->default_value("box"), "Form of the polygons (box, triangle)")
+ ("join", po::value<std::string>(&join)->default_value("round"), "Form of the joins (round, miter)")
+ ("ccw", po::value<bool>(&ccw)->default_value(false), "Counter clockwise polygons")
+ ("open", po::value<bool>(&open)->default_value(false), "Open polygons")
+ ("size", po::value<int>(&settings.field_size)->default_value(10), "Size of the field")
+ ("wkt", po::value<bool>(&settings.wkt)->default_value(false), "Create a WKT of the inputs, for all tests")
+ ("svg", po::value<bool>(&settings.svg)->default_value(false), "Create a SVG for all tests")
+ ;
+
+ po::variables_map varmap;
+ po::store(po::parse_command_line(argc, argv, description), varmap);
+ po::notify(varmap);
+
+ if (varmap.count("help")
+ || (form != "box" && form != "triangle")
+ || (join != "round" && join != "miter")
+ )
+ {
+ std::cout << description << std::endl;
+ return 1;
+ }
+
+ settings.triangular = form != "box";
+ settings.join_code = join == "round" ? 1 : 2;
+
+ if (ccw && open)
+ {
+ test_all<double, false, false>(seed, count, level, settings);
+ }
+ else if (ccw)
+ {
+ test_all<double, false, true>(seed, count, level, settings);
+ }
+ else if (open)
+ {
+ test_all<double, true, false>(seed, count, level, settings);
+ }
+ else
+ {
+ test_all<double, true, true>(seed, count, level, settings);
+ }
+
+#if defined(HAVE_TTMATH)
+ // test_all<ttmath_big, true, true>(seed, count, max, svg, level);
+#endif
+ }
+ catch(std::exception const& e)
+ {
+ std::cout << "Exception " << e.what() << std::endl;
+ }
+ catch(...)
+ {
+ std::cout << "Other exception" << std::endl;
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln
new file mode 100644
index 0000000000..6e8c2574f1
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_polygons_buffer", "recursive_polygons_buffer.vcxproj", "{02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Debug|Win32.Build.0 = Debug|Win32
+ {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Release|Win32.ActiveCfg = Release|Win32
+ {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj
new file mode 100644
index 0000000000..3cc4a384f6
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="recursive_polygons_buffer"
+ RootNamespace="recursive_polygons_buffer"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\recursive_polygons_buffer"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../../..;.;../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="2"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\recursive_polygons_buffer"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../../..;.;../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="program options"
+ >
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\split.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\recursive_polygons_buffer.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/Jamfile.v2 b/libs/geometry/test/robustness/overlay/linear_areal/Jamfile.v2
new file mode 100644
index 0000000000..a31dadf159
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/linear_areal/Jamfile.v2
@@ -0,0 +1,19 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+# Robustness Test - overlay - linear/areal
+#
+# Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+# Use, modification and distribution is 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)
+
+
+project recursive_polygons_linear_areal
+ : requirements
+ <include>.
+ <include>../..
+ <library>../../../../../program_options/build//boost_program_options
+ <link>static
+ ;
+
+exe recursive_polygons_linear_areal : recursive_polygons_linear_areal.cpp ;
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp
new file mode 100644
index 0000000000..3e5e88bd32
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp
@@ -0,0 +1,501 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Robustness Test
+
+// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// Use, modification and distribution is 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)
+
+#if defined(_MSC_VER)
+# pragma warning( disable : 4244 )
+# pragma warning( disable : 4267 )
+#endif
+
+#include <fstream>
+#include <sstream>
+
+#include <boost/foreach.hpp>
+#include <boost/program_options.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/random/variate_generator.hpp>
+#include <boost/timer.hpp>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/extensions/algorithms/midpoints.hpp>
+
+#include <common/common_settings.hpp>
+#include <common/make_square_polygon.hpp>
+
+
+namespace bg = boost::geometry;
+
+template <typename Geometry1, typename Geometry2, typename Geometry3>
+void create_svg(std::string const& filename
+ , Geometry1 const& mp
+ , Geometry2 const& ls
+ , Geometry3 const& difference
+ , Geometry3 const& intersection
+ )
+{
+ typedef typename boost::geometry::point_type<Geometry1>::type point_type;
+
+
+ std::ofstream svg(filename.c_str());
+ boost::geometry::svg_mapper<point_type> mapper(svg, 800, 800);
+
+ boost::geometry::model::box<point_type> box;
+ bg::envelope(mp, box);
+ bg::buffer(box, box, 1.0);
+ mapper.add(box);
+ bg::envelope(ls, box);
+ bg::buffer(box, box, 1.0);
+ mapper.add(box);
+
+ mapper.map(mp, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:3");
+ mapper.map(ls, "stroke-opacity:0.9;stroke:rgb(0,0,0);stroke-width:1");
+
+ mapper.map(intersection,"opacity:0.6;stroke:rgb(0,128,0);stroke-width:5");
+ mapper.map(difference, "opacity:0.6;stroke:rgb(255,0,255);stroke-width:5"); //;stroke-dasharray:1,7;stroke-linecap:round
+}
+
+
+template <typename Linestring, typename Generator, typename Settings>
+inline void make_random_linestring(Linestring& line, Generator& generator, Settings const& settings)
+{
+ using namespace boost::geometry;
+
+ typedef typename point_type<Linestring>::type point_type;
+ typedef typename coordinate_type<Linestring>::type coordinate_type;
+
+ coordinate_type x, y;
+ x = generator();
+ y = generator();
+
+ int count = 3 + generator() % 6;
+ int d = 0; // direction
+
+ for (int i = 0; i <= count && x <= settings.field_size; i++, x++, d = 1 - d)
+ {
+ append(line, make<point_type>(x, y + d));
+ append(line, make<point_type>(x, y + 1 - d));
+ }
+
+ if (d == 0 && generator() % 4 < 3 && y >= 2)
+ {
+ d = 1 - d;
+ x--;
+ y -= 2;
+ count = 3 + generator() % 6;
+ for (int i = 0; i <= count && x >= 0; i++, x--, d = 1 - d)
+ {
+ append(line, make<point_type>(x, y + d));
+ append(line, make<point_type>(x, y + 1 - d));
+ }
+ }
+
+ //if (settings.triangular)
+ //{
+ // // Remove a point, generator says which
+ // int c = generator() % 4;
+ // if (c >= 1 && c <= 3)
+ // {
+ // ring.erase(ring.begin() + c);
+ // }
+ //}
+}
+
+template<typename Geometry>
+class inside_check
+{
+ Geometry const& m_geo;
+ bool& m_result;
+public :
+
+ inside_check(Geometry const& geo, bool& result)
+ : m_geo(geo)
+ , m_result(result)
+ {}
+
+ inline inside_check<Geometry> operator=(inside_check<Geometry> const& input)
+ {
+ return inside_check<Geometry>(input.m_geo, input.m_result);
+ }
+
+ template <typename Point>
+ inline void operator()(Point const& p)
+ {
+ if (! bg::covered_by(p, m_geo))
+ {
+ if (m_result)
+ {
+ std::cout << "Does not fulfill inside check" << std::endl;
+ }
+ m_result = false;
+ }
+ }
+};
+
+
+template<typename Geometry>
+class outside_check
+{
+ Geometry const& m_geo;
+ bool& m_result;
+public :
+ outside_check(Geometry const& geo, bool& result)
+ : m_geo(geo)
+ , m_result(result)
+ {}
+
+ inline outside_check<Geometry> operator=(outside_check<Geometry> const& input)
+ {
+ return outside_check<Geometry>(input.m_geo, input.m_result);
+ }
+
+ template <typename Point>
+ inline void operator()(Point const& p)
+ {
+ if (bg::within(p, m_geo))
+ {
+ if (m_result)
+ {
+ std::cout << "Does not fulfill outside check" << std::endl;
+ }
+ m_result = false;
+ }
+ }
+};
+
+template<typename Segment>
+class border2_check
+{
+ Segment const& m_segment;
+ bool& m_result;
+
+public :
+ border2_check(Segment const& seg, bool& result)
+ : m_segment(seg)
+ , m_result(result)
+ {}
+
+ inline border2_check<Segment> operator=(border2_check<Segment> const& input)
+ {
+ return border2_check<Segment>(input.m_segment, input.m_result);
+ }
+
+ template <typename Segment2>
+ inline void operator()(Segment2 const& segment)
+ {
+ // Create copies (TODO: find out why referring_segment does not compile)
+ typedef typename bg::point_type<Segment2>::type pt;
+ typedef bg::model::segment<pt> segment_type;
+
+ typedef bg::strategy::intersection::relate_cartesian_segments
+ <
+ bg::policies::relate::segments_intersection_points
+ <
+ segment_type,
+ segment_type,
+ bg::segment_intersection_points<pt>
+ >
+ > policy;
+
+ segment_type seg1, seg2;
+ bg::convert(m_segment, seg1);
+ bg::convert(segment, seg2);
+ bg::segment_intersection_points<pt> is = policy::apply(seg1, seg2);
+
+ if (is.count == 2)
+ {
+ if (m_result)
+ {
+ std::cout << "Does not fulfill border2 check" << std::endl;
+ }
+ m_result = true;
+ }
+ }
+};
+
+template<typename Geometry>
+class border_check
+{
+ Geometry const& m_geo;
+ bool& m_result;
+public :
+ border_check(Geometry const& geo, bool& result)
+ : m_geo(geo)
+ , m_result(result)
+ {}
+
+ inline border_check<Geometry> operator=(border_check<Geometry> const& input)
+ {
+ return border_check<Geometry>(input.m_geo, input.m_result);
+ }
+
+ template <typename Segment>
+ inline void operator()(Segment const& s)
+ {
+ bool on_border = false;
+ border2_check<Segment> checker(s, on_border);
+ bg::for_each_segment(m_geo, checker);
+
+ if (on_border)
+ {
+ if (m_result)
+ {
+ std::cout << "Does not fulfill border check" << std::endl;
+ }
+ m_result = false;
+ }
+ }
+};
+
+
+template <typename MultiPolygon, typename Linestring, typename Settings>
+bool verify(std::string const& caseid, MultiPolygon const& mp, Linestring const& ls, Settings const& settings)
+{
+ bg::model::multi_linestring<Linestring> difference, intersection;
+ bg::difference(ls, mp, difference);
+ bg::intersection(ls, mp, intersection);
+
+ //typedef typename bg::length_result_type<point_type>::type length_type;
+
+ bool result = true;
+
+ // 1) Check by length
+ typedef double length_type;
+ length_type len_input = bg::length(ls);
+ length_type len_difference = bg::length(difference);
+ length_type len_intersection = bg::length(intersection);
+ if (! bg::math::equals(len_input, len_difference + len_intersection))
+ {
+ std::cout << "Input: " << len_input
+ << " difference: " << len_difference
+ << " intersection: " << len_intersection
+ << std::endl;
+
+ std::cout << "Does not fulfill length check" << std::endl;
+
+ result = false;
+ }
+
+ // 2) Check by within and covered by
+ inside_check<MultiPolygon> ic(mp, result);
+ bg::for_each_point(intersection, ic);
+
+ outside_check<MultiPolygon> oc(mp, result);
+ bg::for_each_point(difference, oc);
+
+ border_check<MultiPolygon> bc(mp, result);
+ bg::for_each_segment(difference, bc);
+
+ // 3) check also the mid-points from the difference to remove false positives
+ BOOST_FOREACH(Linestring const& d, difference)
+ {
+ Linestring difference_midpoints;
+ bg::midpoints(d, false, std::back_inserter(difference_midpoints));
+ outside_check<MultiPolygon> ocm(mp, result);
+ bg::for_each_point(difference_midpoints, ocm);
+ }
+
+
+ bool svg = settings.svg;
+ bool wkt = settings.wkt;
+ if (! result)
+ {
+ std::cout << "ERROR " << caseid << std::endl;
+ std::cout << bg::wkt(mp) << std::endl;
+ std::cout << bg::wkt(ls) << std::endl;
+ svg = true;
+ wkt = true;
+ }
+
+ if (svg)
+ {
+ std::ostringstream filename;
+ filename << caseid << "_"
+ << typeid(typename bg::coordinate_type<Linestring>::type).name()
+ << ".svg";
+ create_svg(filename.str(), mp, ls, difference, intersection);
+ }
+
+ if (wkt)
+ {
+ std::ostringstream filename;
+ filename << caseid << "_"
+ << typeid(typename bg::coordinate_type<Linestring>::type).name()
+ << ".wkt";
+ std::ofstream stream(filename.str().c_str());
+ stream << bg::wkt(mp) << std::endl;
+ stream << bg::wkt(ls) << std::endl;
+ }
+
+ return result;
+}
+
+template <typename MultiPolygon, typename Generator>
+bool test_linear_areal(MultiPolygon& result, int& index,
+ Generator& generator,
+ int level, common_settings const& settings)
+{
+ MultiPolygon p, q;
+
+ // Generate two boxes
+ if (level == 0)
+ {
+ p.resize(1);
+ q.resize(1);
+ make_square_polygon(p.front(), generator, settings);
+ make_square_polygon(q.front(), generator, settings);
+ bg::correct(p);
+ bg::correct(q);
+ }
+ else
+ {
+ bg::correct(p);
+ bg::correct(q);
+ if (! test_linear_areal(p, index, generator, level - 1, settings)
+ || ! test_linear_areal(q, index, generator, level - 1, settings))
+ {
+ return false;
+ }
+ }
+
+ typedef typename boost::range_value<MultiPolygon>::type polygon;
+
+ MultiPolygon mp;
+ bg::detail::union_::union_insert
+ <
+ polygon
+ >(p, q, std::back_inserter(mp));
+
+ bg::unique(mp);
+ bg::simplify(mp, result, 0.01);
+ bg::correct(mp);
+
+ // Generate a linestring
+ typedef typename bg::point_type<MultiPolygon>::type point_type;
+ typedef bg::model::linestring<point_type> linestring_type;
+ linestring_type ls;
+ make_random_linestring(ls, generator, settings);
+
+ std::ostringstream out;
+ out << "recursive_la_" << index++ << "_" << level;
+ return verify(out.str(), mp, ls, settings);
+}
+
+
+template <typename T, bool Clockwise, bool Closed>
+void test_all(int seed, int count, int level, common_settings const& settings)
+{
+ boost::timer t;
+
+ typedef boost::minstd_rand base_generator_type;
+
+ base_generator_type generator(seed);
+
+ boost::uniform_int<> random_coordinate(0, settings.field_size - 1);
+ boost::variate_generator<base_generator_type&, boost::uniform_int<> >
+ coordinate_generator(generator, random_coordinate);
+
+ typedef bg::model::polygon
+ <
+ bg::model::d2::point_xy<T>, Clockwise, Closed
+ > polygon;
+ typedef bg::model::multi_polygon<polygon> mp;
+
+
+ int index = 0;
+ for(int i = 0; i < count; i++)
+ {
+ mp p;
+ test_linear_areal<mp>(p, index, coordinate_generator, level, settings);
+ }
+ std::cout
+ << "geometries: " << index
+ << " type: " << typeid(T).name()
+ << " time: " << t.elapsed() << std::endl;
+}
+
+int main(int argc, char** argv)
+{
+ try
+ {
+ namespace po = boost::program_options;
+ po::options_description description("=== recursive_polygons_linear_areal ===\nAllowed options");
+
+ int count = 1;
+ int seed = static_cast<unsigned int>(std::time(0));
+ int level = 3;
+ bool ccw = false;
+ bool open = false;
+ common_settings settings;
+ std::string form = "box";
+
+ description.add_options()
+ ("help", "Help message")
+ ("seed", po::value<int>(&seed), "Initialization seed for random generator")
+ ("count", po::value<int>(&count)->default_value(1), "Number of tests")
+ ("diff", po::value<bool>(&settings.also_difference)->default_value(false), "Include testing on difference")
+ ("level", po::value<int>(&level)->default_value(3), "Level to reach (higher->slower)")
+ ("form", po::value<std::string>(&form)->default_value("box"), "Form of the polygons (box, triangle)")
+ ("ccw", po::value<bool>(&ccw)->default_value(false), "Counter clockwise polygons")
+ ("open", po::value<bool>(&open)->default_value(false), "Open polygons")
+ ("size", po::value<int>(&settings.field_size)->default_value(10), "Size of the field")
+ ("wkt", po::value<bool>(&settings.wkt)->default_value(false), "Create a WKT of the inputs, for all tests")
+ ("svg", po::value<bool>(&settings.svg)->default_value(false), "Create a SVG for all tests")
+ ;
+
+ po::variables_map varmap;
+ po::store(po::parse_command_line(argc, argv, description), varmap);
+ po::notify(varmap);
+
+ if (varmap.count("help")
+ || (form != "box" && form != "triangle"))
+ {
+ std::cout << description << std::endl;
+ return 1;
+ }
+
+ settings.triangular = form != "box";
+
+ if (ccw && open)
+ {
+ test_all<double, false, false>(seed, count, level, settings);
+ }
+ else if (ccw)
+ {
+ test_all<double, false, true>(seed, count, level, settings);
+ }
+ else if (open)
+ {
+ test_all<double, true, false>(seed, count, level, settings);
+ }
+ else
+ {
+ test_all<double, true, true>(seed, count, level, settings);
+ }
+
+#if defined(HAVE_TTMATH)
+ // test_all<ttmath_big, true, true>(seed, count, max, svg, level);
+#endif
+ }
+ catch(std::exception const& e)
+ {
+ std::cout << "Exception " << e.what() << std::endl;
+ }
+ catch(...)
+ {
+ std::cout << "Other exception" << std::endl;
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln
new file mode 100644
index 0000000000..5865e1c361
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C++ Express 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_polygons_linear_areal", "recursive_polygons_linear_areal.vcproj", "{1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Debug|Win32.Build.0 = Debug|Win32
+ {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Release|Win32.ActiveCfg = Release|Win32
+ {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj
new file mode 100644
index 0000000000..14e8dd6fdb
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="recursive_polygons_linear_areal"
+ ProjectGUID="{1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}"
+ RootNamespace="recursive_polygons_linear_areal"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\recursive_polygons_linear_areal"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../../../..;.;../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="2"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories=""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\recursive_polygons_linear_areal"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\..\..\boost.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="0"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../../../..;.;../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="program options"
+ >
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\split.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
+ >
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\recursive_polygons_linear_areal.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/Jamfile.v2 b/libs/geometry/test/strategies/Jamfile.v2
index 703ec3a8b7..889ce66a9b 100644
--- a/libs/geometry/test/strategies/Jamfile.v2
+++ b/libs/geometry/test/strategies/Jamfile.v2
@@ -15,6 +15,7 @@ test-suite boost-geometry-strategies
[ run projected_point.cpp ]
[ run pythagoras.cpp ]
[ run spherical_side.cpp ]
+ [ run transform_cs.cpp ]
[ run transformer.cpp ]
[ run within.cpp ]
;
diff --git a/libs/geometry/test/strategies/cross_track.cpp b/libs/geometry/test/strategies/cross_track.cpp
index 2165549d46..38840dc725 100644
--- a/libs/geometry/test/strategies/cross_track.cpp
+++ b/libs/geometry/test/strategies/cross_track.cpp
@@ -15,6 +15,7 @@
#include <geometry_test_common.hpp>
+#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/algorithms/assign.hpp>
#include <boost/geometry/algorithms/distance.hpp>
@@ -84,6 +85,40 @@ void test_distance(
}
+template <typename Point>
+void test_case_boost_geometry_list_20120625()
+{
+ // This function tests the bug submitted by Karsten Ahnert
+ // on Boost.Geometry list at 2012-06-25, and wherefore he
+ // submitted a patch a few days later.
+
+ Point p1, p2;
+ bg::model::segment<Point> s1, s2;
+
+ bg::read_wkt("POINT(1 1)", p1);
+ bg::read_wkt("POINT(5 1)", p2);
+ bg::read_wkt("LINESTRING(0 2,2 2)", s1);
+ bg::read_wkt("LINESTRING(2 2,4 2)", s2);
+
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p1, s1), 0.0174586, 0.0001);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p1, s2), 0.0246783, 0.0001);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p2, s1), 0.0551745, 0.0001);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p2, s2), 0.0246783, 0.0001);
+
+ // Check degenerated segments
+ bg::model::segment<Point> s3;
+ bg::read_wkt("LINESTRING(2 2,2 2)", s3);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p1, s3), 0.0246783, 0.0001);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p2, s3), 0.0551745, 0.0001);
+
+ // Point/Point distance should be identical:
+ Point p3;
+ bg::read_wkt("POINT(2 2)", p3);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p1, p3), 0.0246783, 0.0001);
+ BOOST_CHECK_CLOSE(boost::geometry::distance(p2, p3), 0.0551745, 0.0001);
+}
+
+
template <typename Point, typename LatitudePolicy>
void test_all()
{
@@ -95,6 +130,8 @@ void test_all()
typename bg::coordinate_type<Point>::type const p_to_ab = 86.798321 * 1000.0;
test_distance<Point, LatitudePolicy>(2, 48, 4, 52, 2, 41, average_earth_radius, p_to_ab, 0.1);
test_distance<Point, LatitudePolicy>(2, 48, 2, 41, 4, 52, average_earth_radius, p_to_ab, 0.1);
+
+ test_case_boost_geometry_list_20120625<Point>();
}
diff --git a/libs/geometry/test/strategies/projected_point.cpp b/libs/geometry/test/strategies/projected_point.cpp
index e9f65ca467..11ea749a13 100644
--- a/libs/geometry/test/strategies/projected_point.cpp
+++ b/libs/geometry/test/strategies/projected_point.cpp
@@ -87,33 +87,62 @@ void test_services()
}
-template <typename P1, typename P2>
-void test_all_2d()
+template <typename P1, typename P2, typename T>
+void test_all_2d(std::string const& wkt_p,
+ std::string const& wkt_sp1,
+ std::string const& wkt_sp2,
+ T expected_distance)
{
P1 p;
P2 sp1, sp2;
- bg::read_wkt("POINT(1 1)", p);
- bg::read_wkt("POINT(0 0)", sp1);
- bg::read_wkt("POINT(2 3)", sp2);
-
- typedef typename bg::strategy::distance::projected_point
- <
- P1,
- P2
- > strategy_type;
-
- BOOST_CONCEPT_ASSERT
- (
- (bg::concept::PointSegmentDistanceStrategy<strategy_type>)
- );
-
+ bg::read_wkt(wkt_p, p);
+ bg::read_wkt(wkt_sp1, sp1);
+ bg::read_wkt(wkt_sp2, sp2);
+
+ {
+ typedef bg::strategy::distance::projected_point
+ <
+ P1,
+ P2
+ > strategy_type;
+
+ BOOST_CONCEPT_ASSERT
+ (
+ (bg::concept::PointSegmentDistanceStrategy<strategy_type>)
+ );
+
+ strategy_type strategy;
+ typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
+ return_type d = strategy.apply(p, sp1, sp2);
+ BOOST_CHECK_CLOSE(d, expected_distance, 0.001);
+ }
+
+ // Test combination with the comparable strategy
+ {
+ typedef bg::strategy::distance::projected_point
+ <
+ P1,
+ P2,
+ void,
+ bg::strategy::distance::comparable::pythagoras<P1, P2>
+ > strategy_type;
+ strategy_type strategy;
+ typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
+ return_type d = strategy.apply(p, sp1, sp2);
+ T expected_squared_distance = expected_distance * expected_distance;
+ BOOST_CHECK_CLOSE(d, expected_squared_distance, 0.01);
+ }
- strategy_type strategy;
- typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
- return_type d = strategy.apply(p, sp1, sp2);
- BOOST_CHECK_CLOSE(d, return_type(0.27735203958327), 0.001);
}
+template <typename P1, typename P2>
+void test_all_2d()
+{
+ test_all_2d<P1, P2>("POINT(1 1)", "POINT(0 0)", "POINT(2 3)", 0.27735203958327);
+ test_all_2d<P1, P2>("POINT(2 2)", "POINT(1 4)", "POINT(4 1)", 0.5 * sqrt(2.0));
+ test_all_2d<P1, P2>("POINT(6 1)", "POINT(1 4)", "POINT(4 1)", 2.0);
+ test_all_2d<P1, P2>("POINT(1 6)", "POINT(1 4)", "POINT(4 1)", 2.0);
+}
template <typename P>
void test_all_2d()
diff --git a/libs/geometry/test/strategies/strategies_tests.sln b/libs/geometry/test/strategies/strategies_tests.sln
index 226baff48b..d29448213c 100644
--- a/libs/geometry/test/strategies/strategies_tests.sln
+++ b/libs/geometry/test/strategies/strategies_tests.sln
@@ -18,6 +18,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spherical_side", "spherical
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "within", "within.vcproj", "{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transform_cs", "transform_cs.vcproj", "{2128A5D9-C67E-4C00-A917-A79058C78FCC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -60,6 +62,10 @@ Global
{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Debug|Win32.Build.0 = Debug|Win32
{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Release|Win32.ActiveCfg = Release|Win32
{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Release|Win32.Build.0 = Release|Win32
+ {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Debug|Win32.Build.0 = Debug|Win32
+ {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Release|Win32.ActiveCfg = Release|Win32
+ {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/libs/geometry/test/strategies/transform_cs.cpp b/libs/geometry/test/strategies/transform_cs.cpp
new file mode 100644
index 0000000000..36b327e3ef
--- /dev/null
+++ b/libs/geometry/test/strategies/transform_cs.cpp
@@ -0,0 +1,149 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+
+// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
+// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+
+// Use, modification and distribution is 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 <geometry_test_common.hpp>
+
+#include <boost/geometry/strategies/strategy_transform.hpp>
+#include <boost/geometry/algorithms/transform.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+template <typename T, typename P>
+inline T check_distance(P const& p)
+{
+ T x = bg::get<0>(p);
+ T y = bg::get<1>(p);
+ T z = bg::get<2>(p);
+ return sqrt(x * x + y * y + z * z);
+}
+
+template <typename T>
+void test_transformations_spherical()
+{
+ T const input_long = 15.0;
+ T const input_lat = 5.0;
+
+ T const expected_long = 0.26179938779914943653855361527329;
+ T const expected_lat = 0.08726646259971647884618453842443;
+
+ // Can be checked using http://www.calc3d.com/ejavascriptcoordcalc.html
+ // (for phi use long, in radians, for theta use lat, in radians, they are listed there as "theta, phi")
+ T const expected_polar_x = 0.084186;
+ T const expected_polar_y = 0.0225576;
+ T const expected_polar_z = 0.996195;
+
+ // Can be checked with same URL using 90-theta for lat.
+ // So for theta use 85 degrees, in radians: 0.08726646259971647884618453842443
+ T const expected_equatorial_x = 0.962250;
+ T const expected_equatorial_y = 0.257834;
+ T const expected_equatorial_z = 0.0871557;
+
+ // 1: Spherical-polar (lat=5, so it is near the pole - on a unit sphere)
+ bg::model::point<T, 2, bg::cs::spherical<bg::degree> > sp(input_long, input_lat);
+
+ // 1a: to radian
+ bg::model::point<T, 2, bg::cs::spherical<bg::radian> > spr;
+ bg::transform(sp, spr);
+ BOOST_CHECK_CLOSE(bg::get<0>(spr), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(spr), expected_lat, 0.001);
+
+ // 1b: to cartesian-3d
+ bg::model::point<T, 3, bg::cs::cartesian> pc3;
+ bg::transform(sp, pc3);
+ BOOST_CHECK_CLOSE(bg::get<0>(pc3), expected_polar_x, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(pc3), expected_polar_y, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(pc3), expected_polar_z, 0.001);
+ BOOST_CHECK_CLOSE(check_distance<T>(pc3), 1.0, 0.001);
+
+ // 1c: back
+ bg::transform(pc3, spr);
+ BOOST_CHECK_CLOSE(bg::get<0>(spr), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(spr), expected_lat, 0.001);
+
+ // 2: Spherical-equatorial (lat=5, so it is near the equator)
+ bg::model::point<T, 2, bg::cs::spherical_equatorial<bg::degree> > se(input_long, input_lat);
+
+ // 2a: to radian
+ bg::model::point<T, 2, bg::cs::spherical_equatorial<bg::radian> > ser;
+ bg::transform(se, ser);
+ BOOST_CHECK_CLOSE(bg::get<0>(ser), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(ser), expected_lat, 0.001);
+
+ bg::transform(se, pc3);
+ BOOST_CHECK_CLOSE(bg::get<0>(pc3), expected_equatorial_x, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(pc3), expected_equatorial_y, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(pc3), expected_equatorial_z, 0.001);
+ BOOST_CHECK_CLOSE(check_distance<T>(pc3), 1.0, 0.001);
+
+ // 2c: back
+ bg::transform(pc3, ser);
+ BOOST_CHECK_CLOSE(bg::get<0>(spr), expected_long, 0.001); // expected_long
+ BOOST_CHECK_CLOSE(bg::get<1>(spr), expected_lat, 0.001); // expected_lat
+
+
+ // 3: Spherical-polar including radius
+ bg::model::point<T, 3, bg::cs::spherical<bg::degree> > sp3(input_long, input_lat, 0.5);
+
+ // 3a: to radian
+ bg::model::point<T, 3, bg::cs::spherical<bg::radian> > spr3;
+ bg::transform(sp3, spr3);
+ BOOST_CHECK_CLOSE(bg::get<0>(spr3), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(spr3), expected_lat, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(spr3), 0.5, 0.001);
+
+ // 3b: to cartesian-3d
+ bg::transform(sp3, pc3);
+ BOOST_CHECK_CLOSE(bg::get<0>(pc3), expected_polar_x / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(pc3), expected_polar_y / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(pc3), expected_polar_z / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(check_distance<T>(pc3), 0.5, 0.001);
+
+ // 3c: back
+ bg::transform(pc3, spr3);
+ BOOST_CHECK_CLOSE(bg::get<0>(spr3), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(spr3), expected_lat, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(spr3), 0.5, 0.001);
+
+
+ // 4: Spherical-equatorial including radius
+ bg::model::point<T, 3, bg::cs::spherical_equatorial<bg::degree> > se3(input_long, input_lat, 0.5);
+
+ // 4a: to radian
+ bg::model::point<T, 3, bg::cs::spherical_equatorial<bg::radian> > ser3;
+ bg::transform(se3, ser3);
+ BOOST_CHECK_CLOSE(bg::get<0>(ser3), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(ser3), expected_lat, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(ser3), 0.5, 0.001);
+
+ // 4b: to cartesian-3d
+ bg::transform(se3, pc3);
+ BOOST_CHECK_CLOSE(bg::get<0>(pc3), expected_equatorial_x / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(pc3), expected_equatorial_y / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(pc3), expected_equatorial_z / 2.0, 0.001);
+ BOOST_CHECK_CLOSE(check_distance<T>(pc3), 0.5, 0.001);
+
+ // 4c: back
+ bg::transform(pc3, ser3);
+ BOOST_CHECK_CLOSE(bg::get<0>(ser3), expected_long, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(ser3), expected_lat, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<2>(ser3), 0.5, 0.001);
+}
+
+int test_main(int, char* [])
+{
+ test_transformations_spherical<double>();
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/transform_cs.vcproj b/libs/geometry/test/strategies/transform_cs.vcproj
new file mode 100644
index 0000000000..ea115c56f8
--- /dev/null
+++ b/libs/geometry/test/strategies/transform_cs.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="transform_cs"
+ ProjectGUID="{2128A5D9-C67E-4C00-A917-A79058C78FCC}"
+ RootNamespace="transform_cs"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\transform_cs"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\boost.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../..;.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\transform_cs"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\boost.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../..;.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ ExceptionHandling="2"
+ UsePrecompiledHeader="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\transform_cs.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/libs/geometry/test/test_common/test_point.hpp b/libs/geometry/test/test_common/test_point.hpp
index 359819e943..5a19d6c3cb 100644
--- a/libs/geometry/test/test_common/test_point.hpp
+++ b/libs/geometry/test/test_common/test_point.hpp
@@ -18,6 +18,9 @@
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/tag.hpp>
+// NOTE: since Boost 1.51 the Point type may always be a pointer.
+// Therefore the traits class don't need to add a pointer.
+// This obsoletes this whole test-point-type
namespace test
{
diff --git a/libs/geometry/test/test_common/with_pointer.hpp b/libs/geometry/test/test_common/with_pointer.hpp
index ff8967f7ec..22edbdef54 100644
--- a/libs/geometry/test/test_common/with_pointer.hpp
+++ b/libs/geometry/test/test_common/with_pointer.hpp
@@ -19,6 +19,11 @@
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/tag.hpp>
+// NOTE: since Boost 1.51 the Point type may always be a pointer.
+// Therefore the traits class don't need to add a pointer.
+// This obsoletes this whole test-point-type
+
+
namespace test
{
@@ -34,44 +39,44 @@ struct test_point_xy
namespace boost { namespace geometry { namespace traits {
-template<> struct tag<test::test_point_xy*>
+template<> struct tag<test::test_point_xy>
{ typedef point_tag type; };
-template<> struct coordinate_type<test::test_point_xy*>
+template<> struct coordinate_type<test::test_point_xy>
{ typedef double type; };
-template<> struct coordinate_system<test::test_point_xy*>
+template<> struct coordinate_system<test::test_point_xy>
{ typedef cs::cartesian type; };
-template<> struct dimension<test::test_point_xy*> : boost::mpl::int_<2> {};
+template<> struct dimension<test::test_point_xy> : boost::mpl::int_<2> {};
template<>
-struct access<test::test_point_xy*, 0>
+struct access<test::test_point_xy, 0>
{
- static double get(test::test_point_xy const* p)
+ static double get(test::test_point_xy const& p)
{
- return p->x;
+ return p.x;
}
- static void set(test::test_point_xy* p, double const& value)
+ static void set(test::test_point_xy& p, double const& value)
{
- p->x = value;
+ p.x = value;
}
};
template<>
-struct access<test::test_point_xy*, 1>
+struct access<test::test_point_xy, 1>
{
- static double get(test::test_point_xy const* p)
+ static double get(test::test_point_xy const& p)
{
- return p->y;
+ return p.y;
}
- static void set(test::test_point_xy* p, double const& value)
+ static void set(test::test_point_xy& p, double const& value)
{
- p->y = value;
+ p.y = value;
}
};
diff --git a/libs/geometry/test/views/closeable_view.cpp b/libs/geometry/test/views/closeable_view.cpp
index 5afaa05c6b..dde61a0679 100644
--- a/libs/geometry/test/views/closeable_view.cpp
+++ b/libs/geometry/test/views/closeable_view.cpp
@@ -76,7 +76,7 @@ void test_non_geometry()
it += 2;
BOOST_CHECK_EQUAL(*it, 1);
- BOOST_CHECK_EQUAL(boost::size(view), 4);
+ BOOST_CHECK_EQUAL(boost::size(view), 4u);
}