最有效的方法找了一圈邊界的正確像素是Bresenhamn的算法或者中間點圓算法; http://en.wikipedia.org/wiki/Midpoint_circle_algorithm#Optimization
這是我如何改變這種狀況,以適應你的:
public class Circle {
private char[][] px;
private char cEmpty='.';
private char cFilled='#';
public static void main(String[] args) {
new Circle(15);
}
public Circle(int size)
{
px=new char[size][size];
for(int i=0;i<size;i++)
for(int j=0;j<size;j++)
px[i][j]=cEmpty;
calc(size/2,size/2,size/2-1);
for(int i=0;i<size;i++){
for(int j=0;j<size;j++)
System.out.print(px[i][j]);
System.out.println();
}
}
public void calc(int cx, int cy, int radius)
{
int error = -radius;
int x = radius;
int y = 0;
while (x >= y)
{
plot8points(cx, cy, x, y);
error += y;
++y;
error += y;
if (error >= 0)
{
--x;
error -= x;
error -= x;
}
}
}
void plot8points(int cx, int cy, int x, int y)
{
plot4points(cx, cy, x, y);
if (x != y) plot4points(cx, cy, y, x);
}
void plot4points(int cx, int cy, int x, int y)
{
setPixel(cx + x, cy + y);
if (x != 0) setPixel(cx - x, cy + y);
if (y != 0) setPixel(cx + x, cy - y);
if (x != 0 && y != 0) setPixel(cx - x, cy - y);
}
void setPixel(int x, int y){
px[x][y]=cFilled;
}
}
我只是想知道,這功課? – 2011-04-16 13:27:17
看起來像一個菱形 – jberg 2011-04-16 13:31:39
這傢伙是要求人們給他一個算法?我勒個去??? – 2011-04-16 13:33:22