今天在计算顶点法向量的时候法线,不论怎么计算总有黑色的面存在,后面才发现是与顶点的顺序有关,查找了一些资料后发现利用鞋带公式计算多边形的面积可以很方便的判断点集的顺序。
具体的鞋带公式可以查看维基百科上的介绍:https://en.wikipedia.org/wiki/Shoelace_formula
该公式为
A是多边形的面积,去掉绝对值,得到A数值大于0,则点集顺序为逆时针;反之小于0,点集为顺时针。
代码:
double getSort(vector<point>ptsOriginal)
{
double area = 0.0;
for (size_t i=0;i<ptsOriginal->size()-1;i++)
{
area +=0.5*((*ptsOriginal)[i].x()*(*ptsOriginal)[i + 1].y() - (*ptsOriginal)[i + 1].x()*(*ptsOriginal)[i].y());
}
//cout << "" << area << endl;
return area;
}