summaryrefslogtreecommitdiff
path: root/boost/geometry/strategies/cartesian/box_in_box.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/strategies/cartesian/box_in_box.hpp')
-rw-r--r--boost/geometry/strategies/cartesian/box_in_box.hpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/boost/geometry/strategies/cartesian/box_in_box.hpp b/boost/geometry/strategies/cartesian/box_in_box.hpp
index 7680b8362c..9889658a13 100644
--- a/boost/geometry/strategies/cartesian/box_in_box.hpp
+++ b/boost/geometry/strategies/cartesian/box_in_box.hpp
@@ -3,6 +3,7 @@
// 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.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -21,10 +22,10 @@
#include <boost/geometry/strategies/within.hpp>
-namespace boost { namespace geometry { namespace strategy
+namespace boost { namespace geometry { namespace strategy
{
-
-
+
+
namespace within
{
@@ -36,7 +37,8 @@ struct box_within_range
, BoxContainingValue const& bing_min
, BoxContainingValue const& bing_max)
{
- return bed_min > bing_min && bed_max < bing_max;
+ return bing_min <= bed_min && bed_max <= bing_max // contained in containing
+ && bed_min < bed_max; // interiors overlap
}
};
@@ -69,9 +71,9 @@ struct relate_box_box_loop
assert_dimension_equal<Box1, Box2>();
if (! SubStrategy::apply(
- get<min_corner, Dimension>(b_contained),
- get<max_corner, Dimension>(b_contained),
- get<min_corner, Dimension>(b_containing),
+ get<min_corner, Dimension>(b_contained),
+ get<max_corner, Dimension>(b_contained),
+ get<min_corner, Dimension>(b_containing),
get<max_corner, Dimension>(b_containing)
)
)
@@ -115,7 +117,7 @@ struct box_in_box
{
return relate_box_box_loop
<
- SubStrategy,
+ SubStrategy,
Box1, Box2, 0, dimension<Box1>::type::value
>::apply(box1, box2);
}
@@ -134,9 +136,9 @@ namespace within { namespace services
template <typename BoxContained, typename BoxContaining>
struct default_strategy
<
- box_tag, box_tag,
- box_tag, areal_tag,
- cartesian_tag, cartesian_tag,
+ box_tag, box_tag,
+ box_tag, areal_tag,
+ cartesian_tag, cartesian_tag,
BoxContained, BoxContaining
>
{
@@ -152,9 +154,9 @@ namespace covered_by { namespace services
template <typename BoxContained, typename BoxContaining>
struct default_strategy
<
- box_tag, box_tag,
- box_tag, areal_tag,
- cartesian_tag, cartesian_tag,
+ box_tag, box_tag,
+ box_tag, areal_tag,
+ cartesian_tag, cartesian_tag,
BoxContained, BoxContaining
>
{