gpt4 book ai didi

hexagonal-tiles - 计算六边形之间的网格距离

转载 作者:行者123 更新时间:2023-12-04 06:53:02 24 4
gpt4 key购买 nike

enter image description here

我有一个像图片中那样的六边形网格,我试图找到最简单的方法(可能是一个公式)来计算这个网格内两个六边形之间的距离。当然,我的网格的大小比这大,但是当我们计算规则网格(具有水平轴和垂直轴)中两个节点之间的距离时,我试图找到一个类似于欧几里得距离公式的公式。

我读了一些方法,但他们都说 Y 轴应该是 60 度,然后他们提供了一些公式( Manhattan Distance between tiles in a hexagonal grid )。有没有办法使用与我上传的图片相同的“坐标系”来计算距离?

最佳答案

欧几里得距离

您可以使用应用于计算位置的正常公式来计算欧几里德距离。

假设我们从位置 a0,b0 和 a1,b1 开始。

x 位置由 b*w 给出,其中 w 是一个常数,取决于六边形的大小。

y 位置由 (a+b/2)*h 给出。所以完整的公式是:

x0 = b0*w
x1 = b1*w
y0 = (a0+b0/2)*h
y1 = (a1+b1/2)*h
dist = sqrt( (x1-x0)^2 + (y1-y0)^2 )

h 是六边形的高度

w 是六边形列之间的水平距离

w 也可以作为 h 的函数计算为:
w=sqrt(3)*h/2

六边形距离

假设您可以从六边形移动到相邻的六边形。

您可以通过以下方式计算从一个六边形移动到另一个六边形的移动次数:
x0 = a0-floor(b0/2)
y0 = b0
x1 = a1-floor(b1/2)
y1 = b1
dx = x1 - x0
dy = y1 - y0
dist = max(abs(dx), abs(dy), abs(dx+dy))

关于hexagonal-tiles - 计算六边形之间的网格距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com