mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-13 00:22:10 +00:00
Merge branch 'develop' of github.com:boostorg/geometry into develop
This commit is contained in:
@@ -148,11 +148,11 @@ inline void difference(Geometry1 const& geometry1,
|
||||
typedef typename boost::range_value<Collection>::type geometry_out;
|
||||
concept::check<geometry_out>();
|
||||
|
||||
typedef typename geometry::rescale_policy_type
|
||||
typedef typename geometry::rescale_overlay_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type // TODO from both
|
||||
>::type
|
||||
rescale_policy_type;
|
||||
Geometry1,
|
||||
Geometry2
|
||||
>::type rescale_policy_type;
|
||||
|
||||
rescale_policy_type robust_policy
|
||||
= geometry::get_rescale_policy<rescale_policy_type>(geometry1, geometry2);
|
||||
|
||||
@@ -196,9 +196,10 @@ inline bool intersection(Geometry1 const& geometry1,
|
||||
concept::check<Geometry1 const>();
|
||||
concept::check<Geometry2 const>();
|
||||
|
||||
typedef typename geometry::rescale_policy_type
|
||||
typedef typename geometry::rescale_overlay_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type // TODO from both
|
||||
Geometry1,
|
||||
Geometry2
|
||||
>::type rescale_policy_type;
|
||||
|
||||
rescale_policy_type robust_policy
|
||||
|
||||
@@ -156,9 +156,10 @@ inline void sym_difference(Geometry1 const& geometry1,
|
||||
typedef typename boost::range_value<Collection>::type geometry_out;
|
||||
concept::check<geometry_out>();
|
||||
|
||||
typedef typename geometry::rescale_policy_type
|
||||
typedef typename geometry::rescale_overlay_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type // TODO from both
|
||||
Geometry1,
|
||||
Geometry2
|
||||
>::type rescale_policy_type;
|
||||
|
||||
rescale_policy_type robust_policy
|
||||
|
||||
@@ -270,9 +270,10 @@ inline OutputIterator union_insert(Geometry1 const& geometry1,
|
||||
concept::check<Geometry2 const>();
|
||||
concept::check<GeometryOut>();
|
||||
|
||||
typedef typename geometry::rescale_policy_type
|
||||
typedef typename geometry::rescale_overlay_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type // TODO from both
|
||||
Geometry1,
|
||||
Geometry2
|
||||
>::type rescale_policy_type;
|
||||
|
||||
typedef strategy_intersection
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include <boost/type_traits.hpp>
|
||||
|
||||
#include <boost/geometry/core/tag_cast.hpp>
|
||||
|
||||
#include <boost/geometry/algorithms/envelope.hpp>
|
||||
#include <boost/geometry/algorithms/expand.hpp>
|
||||
#include <boost/geometry/algorithms/detail/recalculate.hpp>
|
||||
@@ -221,6 +223,49 @@ struct rescale_policy_type
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
template
|
||||
<
|
||||
typename Geometry1,
|
||||
typename Geometry2,
|
||||
typename Tag1 = typename tag_cast
|
||||
<
|
||||
typename tag<Geometry1>::type,
|
||||
pointlike_tag,
|
||||
linear_tag,
|
||||
areal_tag
|
||||
>::type,
|
||||
typename Tag2 = typename tag_cast
|
||||
<
|
||||
typename tag<Geometry2>::type,
|
||||
pointlike_tag,
|
||||
linear_tag,
|
||||
areal_tag
|
||||
>::type
|
||||
>
|
||||
struct rescale_overlay_policy_type
|
||||
// Default: no rescaling
|
||||
: public detail::get_rescale_policy::rescale_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type,
|
||||
false
|
||||
>
|
||||
{};
|
||||
|
||||
// Areal/areal: get rescale policy based on coordinate type
|
||||
template
|
||||
<
|
||||
typename Geometry1,
|
||||
typename Geometry2
|
||||
>
|
||||
struct rescale_overlay_policy_type<Geometry1, Geometry2, areal_tag, areal_tag>
|
||||
: public rescale_policy_type
|
||||
<
|
||||
typename geometry::point_type<Geometry1>::type
|
||||
>
|
||||
{};
|
||||
|
||||
|
||||
template <typename Policy, typename Geometry>
|
||||
inline Policy get_rescale_policy(Geometry const& geometry)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user