我有这样的代码:
typedef boost :: geometry :: model :: polygon< Point2,false>多边形;
多边形边界;
我需要填补边界。我认为它一定很容易,我从来没有使用过boost,而且我还没有找到指令。我查看了许多示例,但它们并未包含所需的操作。 我尝试使用项目umeshu https://github.com/vladimir-ch/umeshu/来创建具有良好三角测量的网格。我只需要了解如何填充初始数据。
答案 0 :(得分:2)
您想要的界面是:
//! 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 . . .