Boost logo

Geometry :

Subject: [geometry] Call to geometry::within returns true when point is outside ring
From: Rob K. (kashiraja_at_[hidden])
Date: 2012-10-14 19:57:23

I'm seeing some unexpected behavior in a call to within. In the code below
I am checking if a coordinate (0,0) is within a ring. The ring is
positioned to the right of the origin so within should return false, but it
returns true.
However, if the ring coordinates conform to a true rectangle (for example,
all lines are parallel to either X or Y axis), the function returns false
regardless of where the rectangle is positioned in the Y direction (as

Moving the ring along different offsets along the y-axis, it seems if any
line intersects the x-axis at an angle, it returns true. E.g. in the test
case below the top line is (4,0) to (6,-.1).
I've just started using this library so it is possible I have over looked
some assumption (I have made sure that the coordinates are listed in
clockwise order at least).

I a post a month or two ago that indicates that ::within might still not be
fully functional? (


#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
#include <boost/assign.hpp>

bool TestPointWithinRing()
       typedef boost::geometry::model::d2::point_xy<double> Point;
    typedef boost::geometry::model::ring<Point> Ring;

    bool result = false;
    Point myPoint;
    Ring myRect;

    boost::geometry::assign_values(myPoint, 0.0, 0.0);

    // (0,0) is within
    // (4,0)-----(6,-.1)
    // | |
    // (4,-3.1)--(6,-3.1)

    // Within returns TRUE (should return FALSE)
       myRect, boost::assign::tuple_list_of
       (6., -.1) (6., -3.1) (4., -3.1) (4., 0.)

    // Within returns false in both cases: (OK)
    // myRect, boost::assign::tuple_list_of
    // (6., -.1) (6., -3.1) (4., -3.1) (4., -.1)
    // myRect, boost::assign::tuple_list_of
    // (6., 0) (6., -3.1) (4., -3.1) (4., 0)

    result = boost::geometry::within(myPoint, myRect);

    return result;

Geometry list run by mateusz at