求多边形重心C#版代码

 

 

        public PointF getCenterOfGravityPoint(List<PointF> mPoints)
        {
            float area = 0.0f;//多边形面积  
            float Gx = 0.0f, Gy = 0.0f;// 重心的x、y  
            for (int i = 1; i <= mPoints.Count; i++)
            {
                float iLat = mPoints[(i % mPoints.Count())].X;
                float iLng = mPoints[(i % mPoints.Count())].Y;
                float nextLat = mPoints[(i - 1)].X;
                float nextLng = mPoints[(i - 1)].Y;
                float temp = (iLat * nextLng - iLng * nextLat) / 2.0f;
                area += temp;
                Gx += temp * (iLat + nextLat) / 3.0f;
                Gy += temp * (iLng + nextLng) / 3.0f;
            }
            Gx = Gx / area;
            Gy = Gy / area;
            return new PointF(Gx, Gy);
        } 

 

posted @ 2021-03-26 13:06  passtime  阅读(477)  评论(1编辑  收藏  举报