【发布时间】:2019-04-01 06:26:51
【问题描述】:
我有大小为 640 x 480 的游戏窗口,它由粒子填充,但是当粒子离开一侧时,它会环绕到另一侧(即它是一个环形)。
我想计算每个粒子之间的距离,因为这将用于对每个粒子施加不同的力。
一开始我循环遍历每一对粒子,然后重新调整所有内容,使对中的第一个粒子居中,然后计算到第二个粒子的距离,但这运行起来非常慢。
然后我在 scipy.spatial.distance 中找到了一些函数,可以让我非常快速地计算所有点之间的距离,但唯一的问题是它没有考虑环绕。
这是我当前的代码
from scipy.spatial.distance import pdist, squareform
...
distance = squareform(pdist([(p.x, p.y) for p in particles]))
这适用于中心附近的粒子,但如果一个粒子在 (1, 320) 而另一个粒子在 (639, 320),那么它会将它们的距离计算为 638 而不是 2。它不需要考虑到包装。
我可以使用不同的功能,或者我可以在之前/之后应用一些转换以考虑换行吗?
【问题讨论】:
-
“当一个粒子离开一侧时,它会缠绕到另一侧”。不要认为你描述的是一个“环形”。那是一个甜甜圈。