本帖最后由 woshizaishiwuyule 于 2013-07-12 12:07:21 编辑

解决方案 »

  1.   

    好计算吗?给指点下吧,我还要把GPS转化成坐标吗?还是怎么计算?
      

  2.   

    在读点构造数组过程中,找到距离最大的两个点 P0,P1首先以P0,P1的终点为圆心构造初始圆,半径为R(P0P1/2),计算出圆心坐标C,
    //以下为伪代码
    DO{
       BOOL ALLINCIRCLE = TRUE;
       FOR EACH(P IN LIST)
       {
           IF(DISTANCE(P,C)<R)
               CONTINUE;
           // 
           ALLINCIRCLE=TRUE;
           //P0,P1,P构造新圆
           R=R(P0,P1,P);
           C=C(P0,P1,P);
           BREAK;
       }
    }WHILE(!ALLINCIRCLE);
      

  3.   

    ERROR:Line9 : ALLINCIRCLE=FALSE;
      

  4.   


    不是你们想的那么简单。
    图中蓝色为初始圆,也是所有圆中的最小点1: P0P1的距离是所有点中最大的,理论上所有点都位于两个大圆相交部分即可,但是任意两个点的距离不应该大于P0P1,点的分布还有隐含限制2:图中红色圆是发现某个点不在之前R圆内构造的新圆,过新发现点和P0P1点,此圆半径应该比P0P1/2大3:原来在蓝色圆内的点应该在新圆内 (此条为假设)4:任意时候所有两点之间的距离不大于P0P1,更不大于新圆直径没兴趣做代码,思路如上未参考 平面点集的最小包围圆 之类文献
      

  5.   


    不是你们想的那么简单。
    图中蓝色为初始圆,也是所有圆中的最小点1: P0P1的距离是所有点中最大的,理论上所有点都位于两个大圆相交部分即可,但是任意两个点的距离不应该大于P0P1,点的分布还有隐含限制2:图中红色圆是发现某个点不在之前R圆内构造的新圆,过新发现点和P0P1点,此圆半径应该比P0P1/2大3:原来在蓝色圆内的点应该在新圆内 (此条为假设)4:任意时候所有两点之间的距离不大于P0P1,更不大于新圆直径没兴趣做代码,思路如上未参考 平面点集的最小包围圆 之类文献
    第三点你也说了是假设,那就没意义了。
    新构造的红色圆是把最上方的红色点和P0、P1圈起来了,但如下图,又没有把N和M给圈起来,这个时候怎么处理 ?
      

  6.   

    点坐标知道,求重心o,然后计算重心到所有点的最远距离r
    圆心o,半径r做圆不行吗?
      

  7.   

    en : new solution如果第一个新圆确定后发现有点在圆外,在P0,P1中找一个点,这个点和当前新圆第三点(P0,P1,P3)中的P3以及圆外最大半径点NewP两点距离近的那一个 楼上图中水平虚线左侧端点,抛弃另外一点,用新的三点构造圆,这个会不会包含所有点?