获取给定半径内的所有点

问题描述 投票:0回答:1

我目前正在为 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.

我该怎么做?

algorithm math godot
1个回答
0
投票

给定 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 范围。

© www.soinside.com 2019 - 2024. All rights reserved.