我对Boost完全是个新手,而对Boost-Geometry则更是如此,所以我的问题是...对我向多边形中添加点的顺序进行Boost-Geometry是否重要?

例如:这是相同的吗?

// create a polygon
polygon p;
p.outer().push_back(point(0, 0));
p.outer().push_back(point(0, 10));
p.outer().push_back(point(10, 0));
p.outer().push_back(point(10, 10));

// create a polygon the same polygon?
polygon p;
p.outer().push_back(point(0, 0));
p.outer().push_back(point(0, 10));
p.outer().push_back(point(10, 10));
p.outer().push_back(point(10, 0));

提前非常感谢您。

最佳答案

here所述:



至于多边形概念,有一些规则写成here:

  • 如果将ring_type下的多边形定义为顺时针,则外圈必须具有顺时针方向,并且任何内圈都必须反转。定义的方向(因此:顺时针为外圈为逆时针)。
  • 如果ring_type是逆时针定义的,反之亦然。
  • 如果将ring_type下的多边形定义为封闭,则所有环都必须封闭:第一个点在空间上必须等于最后一个点。

  • 当您使用交集,面积,质心,联合等算法时,点顺序很重要。
    要在使用这些功能之前校正几何形状,请使用boost::geometry::correct(reference)

    08-06 00:22
    查看更多