你想要的界面是:
//! This refers to the exterior ring of the polygon.
inline ring_type& outer() { return m_outer; }
//! This refers to a collection of rings which are holes inside the polygon.
inline inner_container_type & inners() { return m_inners; }
默认情况下 ring_type 是 std::vector ,其中 Point 是您指定的模板参数(在您的情况下为 Point2。)
试试:
boundary.outer().push_back(Point2(x, y)); //This fills the exterior boundary with one point whose coordinates are x and y.
这是一个完整的示例:
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <iostream>
namespace bg = boost::geometry;
int main(void)
{
typedef bg::model::point<double, 2, bg::cs::cartesian> point;
typedef bg::model::polygon<point> polygon;
//! create a polygon
polygon p;
p.outer().push_back(point(0., 0.));
p.outer().push_back(point(1., 0.));
p.outer().push_back(point(1., 2.));
p.outer().push_back(point(2., 3.));
p.outer().push_back(point(0., 4.));
//! display it
std::cout << "generated polygon:" << std::endl;
std::cout << bg::wkt<polygon>(p) << std::endl;
return 0;
}
输出:
generated polygon:
POLYGON((0 0,1 0,1 2,2 3,0 4))
Press any key to continue . . .