/**
* 画圆算法,给定半径r,输出圆形
* @author joy
*
*/
public class DrawCircleTest {
private int r;// 圆的半径
DrawCircleTest (int r) {
this.r = r;
}
void paint () {
int y = 2 * r;
int x1 = 0;
int x2 = 0;
//由于计算的失真,画圆时y坐标递减为2,否则画出圆会拉长
for (int i = y; i >= 0; i -= 2) {
x1 = getX(i);
x2 = 2 * r - x1;
System.out.print(getSpace(x2) + "*");
System.out.println(getSpace(x1 - x2) + "*");
//System.out.println("("+ x2 + "," + i +")"+ "(" + x1 + "," + i + ")");
}
}
int getX (int y) {
double temp = 0;
temp = Math.sqrt((double)(r * r - (y - r) * (y - r)));
return (int)Math.round(temp) + r;
}
String getSpace (int n) {
String space = "";
for (int i = 0; i < n; i++) {
space += " ";
}
return space;
}
public static void main(String args[]) {
new DrawCircleTest(6).paint();
}
}
* 画圆算法,给定半径r,输出圆形
* @author joy
*
*/
public class DrawCircleTest {
private int r;// 圆的半径
DrawCircleTest (int r) {
this.r = r;
}
void paint () {
int y = 2 * r;
int x1 = 0;
int x2 = 0;
//由于计算的失真,画圆时y坐标递减为2,否则画出圆会拉长
for (int i = y; i >= 0; i -= 2) {
x1 = getX(i);
x2 = 2 * r - x1;
System.out.print(getSpace(x2) + "*");
System.out.println(getSpace(x1 - x2) + "*");
//System.out.println("("+ x2 + "," + i +")"+ "(" + x1 + "," + i + ")");
}
}
int getX (int y) {
double temp = 0;
temp = Math.sqrt((double)(r * r - (y - r) * (y - r)));
return (int)Math.round(temp) + r;
}
String getSpace (int n) {
String space = "";
for (int i = 0; i < n; i++) {
space += " ";
}
return space;
}
public static void main(String args[]) {
new DrawCircleTest(6).paint();
}
}