boost :: geometry multi_point не может быть построен как многоугольник - PullRequest
3 голосов
/ 12 октября 2011

Во-первых, большое спасибо людям, которые стоят за новым бустом :: геометрия библиотеки!

Этот вопрос заменяет более ранний вопрос, который я сейчас разделил на две, поскольку две отдельные проблемы стали более понятными.

Я прочитал http://www.boost.org/doc/libs/1_47_0/libs/geometry/doc/html/geometry/design.html, который объясняет механизм черт, но я не знаю, почему этот код не компилируется ...

//code to calculate area of convex hull from a set of points

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/multi/geometries/multi_point.hpp>

double convex_hull_area()
{
    using boost::geometry::model::d2::point_xy;
    using boost::geometry::append;
    using boost::geometry::make;

    //this bit works if I use a polygon instead of multi_point
    boost::geometry::model::multi_point<point_xy<float> > all_points_in_radius;

    append(all_points_in_radius,make<point_xy<float> >(0,0));
    append(all_points_in_radius,make<point_xy<float> >(3,0));
    append(all_points_in_radius,make<point_xy<float> >(3,3));
    append(all_points_in_radius,make<point_xy<float> >(2,1));

    boost::geometry::model::polygon<point_xy<float> > hull;
    boost::geometry::convex_hull(all_points_in_radius,hull);
    return boost::geometry::area(hull);
}

Первая ошибка

Error   1   error C2039: 'apply' : is not a member of 'boost::geometry::dispatch::for_each_range<Tag,Geometry,Actor,IsConst>'   d:\boost\boost_1_47_0\boost\geometry\algorithms\detail\for_each_range.hpp   115 boost_geom_test

Если я использую многоугольник вместо многоточечного, код работает просто отлично, хотя, по-видимому, с накладными расходами, которые мне не нужны. Что происходит?

1 Ответ

3 голосов
/ 17 января 2012

Это оказалось ошибкой в ​​boost. Теперь это исправлено в ревизии головы и должно появиться в 1.49.0.

...