我确实需要访问boost多边形的各个点,因此我可以添加/删除/移动它们。

我发现polygon具有外环和内环,可以像这样迭代它们

auto& polygon = experiment->mPolygons.at(experiment->selectedPolygonIndex);
auto& outerRing = boost::geometry::exterior_ring(polygon);

for(auto& point : outerRing)
{
    //some stuff using point
}

但这对修改没有帮助。我还想知道点的索引,因此我可以在正确的位置插入一个新的索引。

我怎样才能做到这一点?

最佳答案

假设您实际上是说Boost Geometry(库),则可以在此处找到“多边形概念”的描述:https://www.boost.org/doc/libs/1_68_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html

请注意,它确认多边形模板已为该概念建模。

您还将注意到,许多可能的操作未直接包含在该页面上。相反,您必须单击进入描述组成元素的Ring concept

这些概念适用于创建任意(用户提供的)数据结构的只读 View 。但是,某些操作作为算法包括在内,例如:bg::assign(除其他外,具有assign_values,assign_zero,assign_points,assign_inverse),bg::append等。

关于c++ - 如何修改 boost 多边形?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51890050/

10-11 22:33
查看更多