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