C++ 用范围变量计算点周围的整数x和y坐标

C++ 用范围变量计算点周围的整数x和y坐标,c++,arrays,2d,coordinates,C++,Arrays,2d,Coordinates,这个问题让我晚上睡不着觉 给定无限2D空间的浮点x和y坐标以及范围变量,我需要得到范围内所有可能的整数坐标。 绿色块在范围内,红色块不在范围内 现在,我有了一个答案,但我不确定这是否是最好的答案。 制作一个二维数组,将所有值放在点周围的一个正方形中(从-distance、distance到distance、-distance),然后遍历整个数组,每次检查距离是否比需要的距离近或远,如果是,则将其插入另一个数组。 从中心点开始,水平双向移动到范围内最远的点 对于遇到的每个点,计算仍在该范围内的最

这个问题让我晚上睡不着觉

给定无限2D空间的浮点x和y坐标以及范围变量,我需要得到范围内所有可能的整数坐标。

绿色块在范围内,红色块不在范围内

现在,我有了一个答案,但我不确定这是否是最好的答案。 制作一个二维数组,将所有值放在点周围的一个正方形中(从-distance、distance到distance、-distance),然后遍历整个数组,每次检查距离是否比需要的距离近或远,如果是,则将其插入另一个数组。

  • 从中心点开始,水平双向移动到范围内最远的点

  • 对于遇到的每个点,计算仍在该范围内的最大垂直坐标,并沿该线添加所有正方形


你可能会查找“圆晶格点”和“高斯圆问题”,更相关的是:虽然这是正确的答案,但我也会对其进行一些修改,因为我可以通过同时交换x和y来添加8个(或在水平、垂直和对角线中心添加4个)正方形,虽然只检查一次距离,但这是个好主意。我只展示了一个示意图,但是你应该利用圆的对称性