获取多边形的重心

来源:互联网 发布:java 图片相似度 编辑:程序博客网 时间:2024/04/29 03:00

/// <summary>
       /// 获取多边形或多线段的重心
       /// </summary>
       /// <paramname="list">点集</param>
       ///<returns>返回多边形的重心</returns>
       public System.Drawing.PointFCalPolygonCenterPoint(List<System.Drawing.PointF>list)
       {
           if (1 == list.Count)
           {
               return list[0];
           }
           else if (2 == list.Count)
           {
               return new System.Drawing.PointF((list[0].X + list[1].X) / 2,(list[0].Y + list[1].Y) / 2);
           }
           else if (list.Count >= 3)
           {
               List<System.Drawing.PointF> newList =newList<System.Drawing.PointF>();
               for (int i = 1; i < list.Count - 1; i++)
               {
                   newList.Add(CalTriCenterPoint(list[0], list[i], list[i +1]));
               }
               return CalPolygonCenterPoint(newList);
           }
           else
           {
               throw new System.Exception("点的集合为空");
           }
       }

       private System.Drawing.PointFCalTriCenterPoint(System.Drawing.PointF pt1, System.Drawing.PointFpt2, System.Drawing.PointF pt3)
       {
           float x = pt1.X + pt2.X + pt3.X;
           x /= 3;
           float y = pt1.Y + pt2.Y + pt3.Y;
           y /= 3;
           return new System.Drawing.PointF(x, y);
       }

#autocad二次开
0 0
原创粉丝点击