summaryrefslogtreecommitdiff
path: root/boost/geometry/policies/relate/de9im.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/policies/relate/de9im.hpp')
-rw-r--r--boost/geometry/policies/relate/de9im.hpp168
1 files changed, 0 insertions, 168 deletions
diff --git a/boost/geometry/policies/relate/de9im.hpp b/boost/geometry/policies/relate/de9im.hpp
deleted file mode 100644
index e2d6b5111c..0000000000
--- a/boost/geometry/policies/relate/de9im.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-
-// 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_GEOMETRY_POLICIES_RELATE_DE9IM_HPP
-#define BOOST_GEOMETRY_GEOMETRY_POLICIES_RELATE_DE9IM_HPP
-
-
-#include <boost/geometry/strategies/intersection_result.hpp>
-#include <boost/geometry/util/math.hpp>
-#include <boost/geometry/util/select_coordinate_type.hpp>
-
-
-namespace boost { namespace geometry
-{
-
-namespace policies { namespace relate
-{
-
-
-template <typename S1, typename S2>
-struct segments_de9im
-{
- typedef de9im_segment return_type;
- typedef S1 segment_type1;
- typedef S2 segment_type2;
- typedef typename select_coordinate_type<S1, S2>::type coordinate_type;
-
- static inline return_type rays_intersect(bool on_segment,
- double ra, double rb,
- coordinate_type const& dx1, coordinate_type const& dy1,
- coordinate_type const& dx2, coordinate_type const& dy2,
- coordinate_type const& wx, coordinate_type const& wy,
- S1 const& s1, S2 const& s2)
- {
- if(on_segment)
- {
- // 0 <= ra <= 1 and 0 <= rb <= 1
- // Now check if one of them is 0 or 1, these are "touch" cases
- bool a = math::equals(ra, 0.0) || math::equals(ra, 1.0);
- bool b = math::equals(rb, 0.0) || math::equals(rb, 1.0);
- if (a && b)
- {
- // Touch boundary/boundary: i-i == -1, i-b == -1, b-b == 0
- // Opposite: if both are equal they touch in opposite direction
- return de9im_segment(ra,rb,
- -1, -1, 1,
- -1, 0, 0,
- 1, 0, 2, false, math::equals(ra,rb));
- }
- else if (a || b)
- {
- // Touch boundary/interior: i-i == -1, i-b == -1 or 0, b-b == -1
- int A = a ? 0 : -1;
- int B = b ? 0 : -1;
- return de9im_segment(ra,rb,
- -1, B, 1,
- A, -1, 0,
- 1, 0, 2);
- }
-
- // Intersects: i-i == 0, i-b == -1, i-e == 1
- return de9im_segment(ra,rb,
- 0, -1, 1,
- -1, -1, 0,
- 1, 0, 2);
- }
-
- // Not on segment, disjoint
- return de9im_segment(ra,rb,
- -1, -1, 1,
- -1, -1, 0,
- 1, 0, 2);
- }
-
- static inline return_type collinear_touch(coordinate_type const& x,
- coordinate_type const& y, bool opposite, char)
- {
- return de9im_segment(0,0,
- -1, -1, 1,
- -1, 0, 0,
- 1, 0, 2,
- true, opposite);
- }
-
- template <typename S>
- static inline return_type collinear_interior_boundary_intersect(S const& s,
- bool a_within_b, bool opposite)
- {
- return a_within_b
- ? de9im_segment(0,0,
- 1, -1, -1,
- 0, 0, -1,
- 1, 0, 2,
- true, opposite)
- : de9im_segment(0,0,
- 1, 0, 1,
- -1, 0, 0,
- -1, -1, 2,
- true, opposite);
- }
-
-
-
- static inline return_type collinear_a_in_b(S1 const& s, bool opposite)
- {
- return de9im_segment(0,0,
- 1, -1, -1,
- 0, -1, -1,
- 1, 0, 2,
- true, opposite);
- }
- static inline return_type collinear_b_in_a(S2 const& s, bool opposite)
- {
- return de9im_segment(0,0,
- 1, 0, 1,
- -1, -1, 0,
- -1, -1, 2,
- true, opposite);
- }
-
- static inline return_type collinear_overlaps(
- coordinate_type const& x1, coordinate_type const& y1,
- coordinate_type const& x2, coordinate_type const& y2, bool opposite)
- {
- return de9im_segment(0,0,
- 1, 0, 1,
- 0, -1, 0,
- 1, 0, 2,
- true, opposite);
- }
-
- static inline return_type segment_equal(S1 const& s, bool opposite)
- {
- return de9im_segment(0,0,
- 1, -1, -1,
- -1, 0, -1,
- -1, -1, 2,
- true, opposite);
- }
-
- static inline return_type degenerate(S1 const& segment, bool a_degenerate)
- {
- return a_degenerate
- ? de9im_segment(0,0,
- 0, -1, -1,
- -1, -1, -1,
- 1, 0, 2,
- false, false, false, true)
- : de9im_segment(0,0,
- 0, -1, 1,
- -1, -1, 0,
- -1, -1, 2,
- false, false, false, true);
- }
-
-};
-
-
-}} // namespace policies::relate
-
-}} // namespace boost::geometry
-
-#endif // BOOST_GEOMETRY_GEOMETRY_POLICIES_RELATE_DE9IM_HPP