【发布时间】:2011-12-13 10:15:03
【问题描述】:
基于How to determine if a list of polygon points are in clockwise order?
我想出了以下代码:
bool PointsClockwise(const std::vector<MyPoint>& points)
{
double sum = 0.0;
for(size_t i = 0; i < points.size() - 1; ++i)
sum += (points[i+1].x()-points[i].x()) * (points[i+1].y()+points[i].y());
return sum > 0.0;
}
但是,在某些情况下,这似乎有错误的结果。以下面的环为例:
LINESTRING(0 119,0 60,694 70,704 72,712 77,719 83,723 92,725 102,723 111,719 120,712 126,703 130)
按逆时针顺序,但函数返回true。
谢谢!
【问题讨论】: