当前位置: 首页 > 知识库问答 >
问题:

计算网格中一组六边形的小中心六边形的坐标

耿炎彬
2023-03-14

我被一个似乎很容易解决的问题所困扰,但我似乎找不出正确的公式。

我有一个立方体坐标系中六边形群的列表。我知道群的立方体坐标,但我需要计算给定群中一个小六边形的“全局”坐标。

例如,在下图中,我知道groupA(x=0,y=0,z=0)groupB(x=-1,y=1,z=0)的坐标。如果每个组都有相同的半径(在本例中半径为1),并且它们之间不重叠(让我们把它看作是从0、0、0开始的组的平铺,从而创建一个十六进制网格),那么我如何计算GroupB中心平铺的坐标呢?

任何帮助都将不胜感激!谢了!

共有1个答案

公西浩
2023-03-14

看起来我找到了一些似乎有用的东西。

如果我弄错了,请随时纠正我。

基于我在原始问题中链接的文章,我提出了一个算法,它基于其更高的群坐标计算小六边形中心坐标(在本例中,我使用的是半径为10的群)。我拿了原来的算法,去掉了作者做的区域划分。代码是用JavaScript编写的。i,j和k变量是群的立方体坐标。函数返回中心小十六进制的立方体坐标:

getGroupCentralTileCoordinates(i, j, k)
{
    let r = 10;
    let shift = 3 * r + 2;

    let xh = shift * i + j;
    let yh = shift * j + k;
    let zh = shift * k + i;

    return {
        'x': (1 + xh - yh) / 3, 
        'y': (1 + yh - zh) / 3, 
        'z': (1 + zh - xh) / 3
    };
}
 类似资料:
  • 我要做的是找出在一个六角网格上,两点之间有多少个六边形。我试着在网上搜索一个公式,但我无法找到一个匹配类型的十六进制网格我正在使用。

  • 我有一个六边形网格,就像图中的一样,我试图找到最简单的方法(也许是一个公式)来计算这个网格内两个六边形之间的距离。当然,我的网格的大小比这更大,但是当我们计算规则网格(有水平和垂直轴)中两个节点之间的距离时,我试图找到一个类似于欧几里得距离公式的公式。 我读了一些方法,但他们都说Y轴应该是60度,然后他们提供了一些公式(六角网格中瓷砖之间的曼哈顿距离)。是否有一种方法来计算距离使用“坐标系”相同,

  • 我似乎在绘制正确的十六进制网格时遇到了一点麻烦: 正如您所看到的,六边形只是稍微不对齐,尽管我相信我的数学是正确的(其中一些可以通过http://www.redblobgames.com/grids/hexagons/进行验证)。 我的绘制方法是从左上六边形(第一行的第一个瓷砖)开始,绘制那一行瓷砖。然后对于下一行,有一个负X偏移量和正Y偏移量等,直到它到达中间行,在中间行X偏移量增加,直到0:

  • 我读了很多关于六边形体系结构的书,但是在我看到的所有例子中,所有的文件夹和类ubication都是不同的,这对我来说有点困惑。 我用下面的文件夹结构做了一个简单的Spring Boot应用程序。适配器文件夹包含存储库接口和rest控制器的实现。 在domain文件夹中,我有model,它是一个简单的POJO,ports,它是服务类的接口,包含了产品的所有业务逻辑,还有repository的接口,它