方法:对于平面曲线可以直接采用格林公式进行判别,而对于空间曲线,虽然可以考虑使用斯托克斯公式,但是从工程应用的角度来讲,不如将曲线投影到某一平面上,而且投影后的曲线方向不变。再使用格林公式求解。
此处我们需要用到的格林公式为,当曲线为逆时针方向时,从几何上可以理解为封闭曲线上半部分与X轴围城的面积,减去下半部分与X轴围成的面积。因此,若计算结果大于0,则为逆时针,反之为顺时针。
bool Algori::AntiClockWise(const std::vector<StepByDay::Point2*> &pts)
{
double d = 0.0;
for (int i = 0; i < pts.size()-1; ++i)
{
d += -0.5*(pts[i + 1]->y + pts[i]->y)*(pts[i + 1]->x - pts[i]->x);
}
if (d > 0)
return true;
else
return false;
}