summaryrefslogtreecommitdiff
path: root/boost/geometry/algorithms/intersects.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/algorithms/intersects.hpp')
-rw-r--r--boost/geometry/algorithms/intersects.hpp116
1 files changed, 2 insertions, 114 deletions
diff --git a/boost/geometry/algorithms/intersects.hpp b/boost/geometry/algorithms/intersects.hpp
index 12ae169f12..503ee1a10a 100644
--- a/boost/geometry/algorithms/intersects.hpp
+++ b/boost/geometry/algorithms/intersects.hpp
@@ -21,120 +21,8 @@
#define BOOST_GEOMETRY_ALGORITHMS_INTERSECTS_HPP
-#include <deque>
+#include <boost/geometry/algorithms/detail/intersects/interface.hpp>
+#include <boost/geometry/algorithms/detail/intersects/implementation.hpp>
-#include <boost/geometry/geometries/concepts/check.hpp>
-#include <boost/geometry/algorithms/detail/overlay/self_turn_points.hpp>
-#include <boost/geometry/algorithms/disjoint.hpp>
-
-#include <boost/geometry/policies/robustness/no_rescale_policy.hpp>
-#include <boost/geometry/policies/robustness/segment_ratio_type.hpp>
-
-#include <boost/geometry/strategies/relate.hpp>
-
-
-namespace boost { namespace geometry
-{
-
-/*!
-\brief \brief_check{has at least one intersection (crossing or self-tangency)}
-\note This function can be called for one geometry (self-intersection) and
- also for two geometries (intersection)
-\ingroup intersects
-\tparam Geometry \tparam_geometry
-\param geometry \param_geometry
-\return \return_check{is self-intersecting}
-
-\qbk{distinguish,one geometry}
-\qbk{[def __one_parameter__]}
-\qbk{[include reference/algorithms/intersects.qbk]}
-*/
-template <typename Geometry>
-inline bool intersects(Geometry const& geometry)
-{
- concepts::check<Geometry const>();
-
- typedef typename geometry::point_type<Geometry>::type point_type;
- typedef typename strategy::relate::services::default_strategy
- <
- Geometry, Geometry
- >::type strategy_type;
- typedef detail::no_rescale_policy rescale_policy_type;
-
- typedef detail::overlay::turn_info
- <
- point_type,
- typename segment_ratio_type<point_type, rescale_policy_type>::type
- > turn_info;
-
- std::deque<turn_info> turns;
-
- typedef detail::overlay::get_turn_info
- <
- detail::overlay::assign_null_policy
- > turn_policy;
-
- strategy_type strategy;
- rescale_policy_type robust_policy;
-
- detail::disjoint::disjoint_interrupt_policy policy;
- detail::self_get_turn_points::get_turns
- <
- turn_policy
- >::apply(geometry, strategy, robust_policy, turns, policy);
- return policy.has_intersections;
-}
-
-
-/*!
-\brief \brief_check2{have at least one intersection}
-\ingroup intersects
-\tparam Geometry1 \tparam_geometry
-\tparam Geometry2 \tparam_geometry
-\tparam Strategy \tparam_strategy{Intersects}
-\param geometry1 \param_geometry
-\param geometry2 \param_geometry
-\param strategy \param_strategy{intersects}
-\return \return_check2{intersect each other}
-
-\qbk{distinguish,with strategy}
-\qbk{[include reference/algorithms/intersects.qbk]}
- */
-template <typename Geometry1, typename Geometry2, typename Strategy>
-inline bool intersects(Geometry1 const& geometry1,
- Geometry2 const& geometry2,
- Strategy const& strategy)
-{
- concepts::check<Geometry1 const>();
- concepts::check<Geometry2 const>();
-
- return ! geometry::disjoint(geometry1, geometry2, strategy);
-}
-
-
-/*!
-\brief \brief_check2{have at least one intersection}
-\ingroup intersects
-\tparam Geometry1 \tparam_geometry
-\tparam Geometry2 \tparam_geometry
-\param geometry1 \param_geometry
-\param geometry2 \param_geometry
-\return \return_check2{intersect each other}
-
-\qbk{distinguish,two geometries}
-\qbk{[include reference/algorithms/intersects.qbk]}
- */
-template <typename Geometry1, typename Geometry2>
-inline bool intersects(Geometry1 const& geometry1, Geometry2 const& geometry2)
-{
- concepts::check<Geometry1 const>();
- concepts::check<Geometry2 const>();
-
- return ! geometry::disjoint(geometry1, geometry2);
-}
-
-
-
-}} // namespace boost::geometry
#endif // BOOST_GEOMETRY_ALGORITHMS_INTERSECTS_HPP