如何填充多边形在增强

How fill the polygon in boost?

本文关键字:多边形 增强 填充 何填充      更新时间:2023-10-16

我有这样的代码:

boost::几何::

typedef模型:polygon<Point2,>多边形;

多边形边界;

我需要填充边界。我想这一定很容易,但我从来没有使用过boost,我也没有找到这方面的指导。我研究了许多例子,但它们没有包含必要的操作。我尝试使用项目umeshu https://github.com/vladimir-ch/umeshu/创建网格与良好的三角测量。我只需要知道如何填充初始数据

您想要的接口是:

//! 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 . . .