Ioan Le Gué
Ioan Le Gué

Reputation: 61

problem with polygon_90_data and vertices

I create a boost polygon with 5 vertices, but when I display the vertices or

#include <boost/polygon/polygon.hpp>
.
.
.

void displayPolygon(boost::polygon::polygon_90_data<int> const& polygon, std::string name)
{
    std::cout << std::endl << "polygon "  << name << std::endl;
    for (boost::polygon::polygon_90_data<int>::iterator_type it = polygon.begin(); it != polygon.end(); it++)
    {
        std::cout << (*it).x() << "/" << (*it).y() << "->";
    }
    std::cout << std::endl;
}
.
.
.
void testPolygon2()
{
    //typedef
    typedef boost::polygon::polygon_90_data<int> Polygon90Type;
    typedef std::vector<Polygon90Type> Polygon90Set;

    typedef boost::polygon::polygon_data<int> PolygonType;
    typedef std::vector<PolygonType> PolygonSet;
    typedef boost::polygon::point_data<int> PointType;
    typedef std::vector<PointType> PointSet;

    typedef boost::polygon::polygon_traits<Polygon90Type>::point_type Point;

    Polygon90Type polygon_1;

    Point pts_1[6] = { Point(0,0), Point(0,10), Point(5,12), Point(10,10), Point(10,0), Point(0,0)};

    polygon_1.set(pts_1, pts_1 + 6);
    std::cout << "polygon_1 area is " << boost::polygon::area(polygon_1) << std::endl;

    std::cout << std::endl << __LINE__ << " : 
    Polygon90Set polygonSet;

    polygonSet.push_back(polygon_1);
    //an attempt to see result of bloating with 0
    boost::polygon::bloat(polygonSet, 0, 0, 0, 0);

    std::cout << "nb polygon bloated " << polygonSet.size() << std::endl;
    for (auto polygon : polygonSet)
    {
        std::cout << std::endl << __LINE__ << "####################################" << std::endl;
        displayPolygon(polygon, "2 - after being bloated");

        std::cout << "area is " << boost::polygon::area(polygon) << std::endl;
    }
}

the area it does not correspond to the polygon created. the area should be 110 but is displayed as 100? the vertices should be (0,0), (0,10), (5,12), (10,10), (10,0) but are (0/10), (5/10) ,(5/10), (10/10), (10/0), (0/0). It looks like the point (/5/12) is dismissed and replaced with point (5/10). What am I doing wrong? thanks.

Upvotes: 0

Views: 79

Answers (0)

Related Questions