1

我是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));

非常感谢您提前。

4

1 回答 1

5

如此处所述:

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

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

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

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

于 2014-06-18T10:44:07.247 回答