三角形的重心公式为三角形重心公式x=(x1+x2+x3)/3,y=(y1+y2+y3)/3。
我在网上搜索了多边形重心的求法,思路是这样的:先将多边形分解成多个三角形,分别求这些三角形的重心,然后得到一组更少点的集合,递归直到点的个数小于3时,即可得到答案。
如果输入的点的集合是按照顺时针或逆时针顺序的,那么分解三角形就不成问题,就很容易写出代码了。
private PointF CalPolygonCenterPoint(List<PointF> list)
{
if (1 == list.Count)
{
return list[0];
}
else if (2 == list.Count)
{
return new PointF((list[0].X + list[0].X) / 2, (list[1].Y + list[1].Y) / 2);
}
else if (list.Count >= 3)
{
List<PointF&g