有两种方法:
方法1:找到一个曲线的凸点,求该凸点到左右两点线段的叉乘,如图所示,我们定义点1为凸点,点2为凹点,如何点1左边向量叉乘右边向量,方向里,为逆时针。
方法2:利用格林公式。求出每个向量的曲线积分,计算出代数和,如果为正值,即为逆时针。代码如下:
/**
*
* @param points
* @return
*/
public boolean AntiClockWise(List<Point> points) {
double sum = 0;
for (int i = 0; i < points.size() - 1; i++) {
Point p1 = points.get(i);
Point p2 = points.get(i + 1);
sum += -0.5 * (p2.y + p1.y) * (p2.x - p1.x);
}
if (sum > 0) return true;
return false;
}