2012-01-08 133 views
-4

在开发人员工作测试中,我被要求解决这个我不知道的问题。请有人帮助我。画一个圆形边界?

使用void draw(int x, int y)绘制虚线圆边界绘制一个点。使用公式x + y = r。您可以使用sqrt方法,但不使用sincostan

Void DrawCircle(int centerX, int centerY, int radius) {…} 

PS:这是不是在所有大学的分配,所以请回复。

+4

如果是工作测试,那么你应该自己解决。 – 2012-01-08 12:42:59

+0

如果面试结束了,你只是想要获得知识,那么就没关系。否则自行解决。 – 2012-01-08 12:50:25

+1

http://en.wikipedia.org/wiki/Midpoint_circle_algorithm – Rotem 2012-01-08 12:50:38

回答

2

我写了一个快速代码,可以解决您的问题,但没有测试过它。

void DrawCircle(int centerX, int centerY, int radius) 
{ 
    int x,y; 
    x=-radius; 
    while(x < radius) 
    { 
     y=sqrt(radius*radius-x*x); 
     draw(x+centerX,y+centerY); 
     y=-y; 
     draw(x+centerX,y+centerY); 
     x++; 
    } 
} 
0

下面是找到你的圈子的边界点的功能(有无限多点,小dDensity,越点你会得到。)

double dDensity = 1.0; 
double y, x; 
for (x = -radius; x <= radius; x += dDensity) 
{ 
    y = sqrt(-pow(x, 2.0f) + pow(r, 2.0f)) 
    Console.WriteLine("(" + (x+centerX).ToString() + "," 
        + (y+centerY).ToString() + ")"); 
} 

这将产生你圆所包含的点。

“画”一个圆圈是一个不同的问题,但这对你来说是一个好的开始IMO。

+0

这将只打印*半*圆的值。您还必须打印@ M.Ivanov的答案中的负平方根! – Dan 2012-01-08 17:46:47