如何用布尔数组记录生成一个圆?例如bool circle3【】={0,1,0,
                                                    1,1,1,
                                                    0,1,0};
ps:设为一个黑白图像,1代表黑色,0代表白色,数组格式为3*3,4*4,等;不求完全匹配,大概就行,谢谢~

解决方案 »

  1.   

    1.根据圆的直径,生成一个 D*D的数组。所有点默认为0.
    2.从圆心开始,沿上下左右方向,根据x坐标和圆的公式,计算出圆上的点的坐标。将坐标上对应的数组元素标记为0.
      

  2.   

    谢谢redduke1202,但你可能没有理解我的意思,我想问的是如何“根据坐标和圆的共识,计算出圆上的坐标”,而不是如何标记...
      

  3.   

    圆的公式不知道么?(x-x0)*(x-x0)+(y-y0)*(y-y0)=r*r其中x0,y0,r都是已知。
    再知道x,或y就可以计算出y或x
      

  4.   

    public static void main(String args[]) {
         int circle[][] = circle(50,30);
         for (int l = 0; l < 50; l++){
         for (int c = 0; c < 50; c++){
         System.out.print(circle[l][c]);
        
         }
         System.out.print("\n");
         }
        }
        
        public static int[][] circle(int dim,int coe){
         int circle[][] = new int [dim][dim];
         for (int l = 0; l < dim; l++){
         for (int c = 0; c < dim; c++){
         if ((Math.pow((c+1)-(dim+1)/2, 2)+Math.pow((l+1)-(dim+1)/2,2)>Math.pow((dim-1)/2,2)-coe )&&
         (Math.pow((c+1)-(dim+1)/2, 2)+Math.pow((l+1)-(dim+1)/2,2)<Math.pow((dim-1)/2,2)+coe )){
         circle[l][c] = 1;
         }
         else
         circle[l][c] = 0;
         }
         }
         return circle;  
        }
    瞎写了一个
    第一个参数是数组的维数,第二个是个系数,越大,圆周越厚
    我拿30以上作为维数试试还可以,可能较小时不太准确