检查跨周期边界的欧几里德距离

时间:2012-05-01 22:23:14

标签: python math geometry

当边界条件是周期性的时,检查两点之间的欧氏距离的最佳方法是什么?我已经尝试了最小距离和(距离 - 距离),但我认为由于我构建程序的方式,这给出了奇怪的输出。我希望有另一个好方法来解决这个问题,我可以采用而不是重新评估函数的其余部分。

这是Python的顺便说一句。目前正在使用numpy.linalg.norm查找欧几里德距离,尽管有SciPy的pdist例程可以执行我可能使用的相同的操作。

1 个答案:

答案 0 :(得分:3)

您应该在每个维度上单独检查dx和range-dx之间的较小值。

def distance(p1, p2):
    total = 0
    for i, (a, b) in enumerate(zip(p1, p2)):
        delta = abs(b - a)
        if delta > dimension[i] - delta:
            delta = dimension[i] - delta
        total += delta ** 2
    return total ** 0.5