1. 程式人生 > >[轉] 打印一近似圓,給定不同半徑,圓的大小隨之改變

[轉] 打印一近似圓,給定不同半徑,圓的大小隨之改變

sta 打印 double arch lang 坐標 hdr ava paint

    import java.lang.Math;  
      
    public class MathDraw  
    {  
        /** 
         * 畫圖函數,輸入圓半徑,輸出圓 
         */  
        public static void paint(int r)  
        {  
           //假定圓心在坐標(r,r)處  
           int x = 0; //x的坐標開始  
           int y = r * 2;    //y的坐標開始  
           int c = 0; //中間空格數量  
           int z = 2; //每行遞減量,步長設為2是為了調節屏幕縱橫比。  
      
           for (int i = r * 2; i >= 0; i = i-z) {  
               //獲取畫*點坐標的x值  
                x = getX(r, y);  
               //先畫該y值上左邊的*  
                System.out.print(getSpace(x) +"*");  
               c = (r-x)*2; //以圓心對應輸出空格  
               //再畫該y值上右邊的*  
                System.out.println(getSpace(c) +"*");  
               //每次y值遞減  
                y-=z;  
            }  
        }  
      
         /** 
         * 獲取畫*位置,輸入圓半徑和坐標y值,輸出坐標x值 
         */  
        public static int getX(int r, int y) {  
            //取直角三角形長邊長  
            int h = y - r;   
           //求直角三角形短邊長  
            double l = Math.sqrt((r * r) - (h * h));  
           //取x值,Math.round()返回最接近的整數  
            return (int) Math.round(r-l);  
        }  
      
        /** 
         * 畫空格 
         */  
        public static String getSpace(int i) {  
            String s = "";  
            for (int j = 0; j < i; j++) {  
                s += " ";  
            }  
            return s;  
        }  
      
        public static void main(String[] args)  
        {  
           //調用畫圖函數,參數是圓的半徑  
           paint(6);  
        }  
    }  

[ 轉自https://blog.csdn.net/monarch_lin/article/details/8679856# ]

[轉] 打印一近似圓,給定不同半徑,圓的大小隨之改變