[轉] 打印一近似圓,給定不同半徑,圓的大小隨之改變
阿新 • • 發佈:2018-10-06
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# ]
[轉] 打印一近似圓,給定不同半徑,圓的大小隨之改變