如何制作圈子?

时间:2012-11-20 17:06:40

标签: c

问题是,我没有得到一个合适的圈子。例如,如果我输入cordinates:9,8和radius:8 ...我只得到很少的分数。有人可以指导我如何获得一个完整的圆,这段代码有什么问题?我们不能使用任何内置函数..

3 个答案:

答案 0 :(得分:1)

这是不正确的

if(sqrt(pow(i,2)+ pow(j,2))== radius)

这两个值非常罕见,完全相等。相反,你应该做一个测试,看看这两个数字是否大致相等。比如这样

if (fabs(sqrt(pow(i,2)+ pow(j,2)) - radius) <= 0.001)

此测试sqrt(pow(i,2)+ pow(j,2))radius是否在0.001之内。您可能需要将0.001的值更改为其他值。这取决于你的坐标系。

答案 1 :(得分:1)

您应该使用Midpoint circle algorithm

它很好,它只使用整数运算 - 所以它既快又精确。

答案 2 :(得分:0)

  

这段代码有什么问题?

你在这里:

if (sqrt(pow(i, 2) + pow(j, 2)) == radius)

您不应使用==比较浮点数,它将无法按预期工作。您应该检查它是否接近半径:

if (sqrt(pow(i, 2) + pow(j, 2)) >= radius * 0.95)

例如。