在Boost几何C++库中我添加的点的顺序重要吗?

Gab*_*abo 3 c++ boost boost-geometry

我是 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));
Run Code Online (Sandbox Code Playgroud)

预先非常感谢您。

Sga*_*Sga 8

正如这里所述:

点顺序是为任何几何类型定义的,但仅对面几何类型(环、多边形、多多边形)具有真正意义

至于多边形的概念,这里写了一些规则:

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

当您使用交集、面积、质心、并集等算法时,点顺序很重要。要在使用这些函数之前纠正您的几何形状,请使用boost::geometry::correct参考