环形缠绕(x和y缠绕)二维阵列上一组位置的质心?

2024-04-24 15:11:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个平坦的欧几里德矩形曲面,但当一个点移动到右边界时,它将出现在左边界(在相同的y值)。反之亦然。我想计算一组点的质心。所讨论的一组点大部分是聚集在一起的。你知道吗

我知道我可以通过平均所有的x和y值来计算一组点的质心。在环绕地图上我该怎么做?你知道吗


Tags: 地图边界曲面矩形质心
2条回答

我以前为拉马钱德兰的阴谋做过。我会检查,但我似乎记得我使用的算法是:

  1. 假设欧几里德区域的原点为(0,0)
  2. 移动集合中的所有点,使它们完全位于该区域内
  3. 计算质心
  4. 将质心移回原点的相反方向

所以,假设你的点在X轴上被分割,你会发现点集的最小X坐标大于区域的中点轴。然后找到距离Y轴边缘的距离。然后将整个簇移动d。你知道吗

如果群集大小相对较小(小于网格的一半),可以使用简单的方法:

假设曲面的宽度和高度是W和H。假设曲面的尺寸是三倍的,所以有-W..2*W和-H..2*H轴范围。展开包装的值。你知道吗

 XMin = X[0];  XMax = X[0]
 the same for Y

 for i = 1..N-1
    Check distance from X[i] to XMax and XMin
    Get largest of them D
    If D is larger than W/2, shift X[i] by W
    //example1: W=100, Xmin = 70, XMax = 90, X[i]=10 => X[i]=20+100 = 120 
    //example2: W=100, Xmin = 5, XMax = 12, X[i]=98 => X[i]=98-100 = -2 
    the same for Y
    update Min/Max
    Calc (W + Average(X[i])) %% W  //modulo operation

相关问题 更多 >