一尘不染

查找给定半径内的所有整数坐标

algorithm

给定二维坐标系,如何找到给定点半径内的所有具有整数坐标的点?我希望这些点作为x坐标和y坐标值。

在给定点周围的正方形中查找点很容易,可以这样进行:

for(int x = -radius + point.x; x < radius + point.x; ++x)
for(int y = -radius + point.y; y < radius + point.y; ++y)
{
    points.insert(point(x, y));
}

但是,如何在给定点周围的圆中找到这些点呢?该算法与性能有关,但与精度无关。因此,如果一个点的半径大于1,则不重要。换句话说,我不需要浮点数精度。


阅读 337

收藏
2020-07-28

共1个答案

一尘不染

最简单的解决方案:取一个正方形并对其进行过滤:

Point point(100, 100);
for(int x = -radius; x <= radius; ++x)
for(int y = -radius; y <= radius; ++y)
if(x*x + y*y <= radius* radius)   {
    points.insert(Point(x + point.x, y + point.y));
}
2020-07-28