获取中心多边形C#

 kkq--_771 发布于 2023-02-08 18:27

示例问题多边形

什么算法,我可以用来获得多边形的中心(红点)
案例1:我尝试使用maxX,maxY,minX,minY,我得到了错误的点(黑点)
案例2:我试图得到第二个最大值min坐标X和Y,但是我遇到的问题是多边形有点小于5的
情况3:我添加if point count < 5 then use case 1 else use case 2但是我得到一些多边形的一些错误

你能告诉我正确的算法吗?

注意 : pic 4

解释第四张照片

//ma mean max, mi mean min, X1 mean first, X2 mean second
maX1 = maX2 = maY1 = maY2 = 0;
miX1 = miX2 = miY1 = miY2 = 2000;
//aCoor is array of coordinate, format = {x1,y1,x2,y2,x3,y3,x4,y4,...}
for(int i=0; i aCoor[i])
     {
         miX2 = aCoor[i];
     //this to get first min x
     if(miX1 > miX2) {miX1 += miX2; miX2 = miX1 - miX2; miX1 -= miX2;}
     }

     //this to get second max Y
     if(maY2 < aCoor[i + 1])
     {
         maY2 = aCoor[i + 1];
     //this to get first max x
     if(maY1 < maY2) {maY1 += maY2; maY2 = maY1 - maY2; maY1 -= maY2;}
     }

     //this to get second min Y
     if(miY2 > aCoor[i + 1])
     {
         miY2 = aCoor[i + 1];
     //this to get first min x
     if(miY1 > miY2) {miY1 += miY2; miY2 = miY1 - miY2; miY1 -= miY2;}
     }
}

if(point.Count < 5)
{
    Xcenter = (maX1 + miX1) / 2;
    Ycenter = (maY1 + miY1) / 2;
}
else
{
    Xcenter = (maX2 + miX2) / 2;
    Ycenter = (maY2 + miY2) / 2;
}

这到底有多远

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有