在boost几何c ++库中,我添加的点的顺序是否重要?

时间:2014-06-18 10:35:00

标签: c++ boost 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));

非常感谢你。

1 个答案:

答案 0 :(得分:4)

如上所述here

  

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

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

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

当您使用交集,区域,质心,联合等算法时,点顺序很重要。 要在使用这些函数之前更正几何图形,请使用boost::geometry::correctreference