まず、新しいboost::geometryライブラリの背後にいる人々に大いに感謝します!
この質問は、2 つの別個の問題がより明確になったため、2 つに分割した以前の質問に取って代わります。
特性メカニズムを説明している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
マルチポイントの代わりにポリゴンを使用すると、コードは問題なく動作しますが、おそらく必要のないオーバーヘッドがあります。何が起こっている?