diff options
Diffstat (limited to 'boost/geometry/algorithms/intersects.hpp')
-rw-r--r-- | boost/geometry/algorithms/intersects.hpp | 116 |
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 |