我目前正在为 Godot 游戏制作一个基于程序块的地形系统,它基于 x 和 y 都是整数的位置工作,例如(10, 4) 或 (0, 2)。当游戏运行时,我希望加载玩家周围给定渲染距离(半径)内的所有块。因此,这意味着将每个有序对放在一个圆中,其中 x 和 y 都是整数,并且 x 和 y 都小于或等于给定的渲染距离,然后将其保存在某种数组或对象中。
我很确定 (x - h)^2 + (y - k)^2 的一些演绎 <= r^2 could work, but I'm really not sure how to implement that with solely integers and put that in code.
我该怎么做?
给定 h、k 和 r,圆中的 (x, y) 值将满足
h - r <= x <= h + r
和 k - r <= y <= k + r
。
因此,最简单的方法是使用 x 和 y 值在范围内的双 for 循环。
在 for 循环中,您可以使用
if
来检查是否 (x - h)^2 + (y - k)^2 <= r^2.
或者,您可以首先使用带有 x 值的 for 循环,然后使用 Floor/ceil 函数计算 k ± sqrt(r^2 - (x-h)^2),以找到特定 x 的 y 范围。