给定二维坐标系,如何找到给定点半径内的所有具有整数坐标的点?我希望这些点作为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,则不重要。换句话说,我不需要浮点数精度。
最简单的解决方案:取一个正方形并对其进行过滤:
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)); }