You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将平顶六边形网格改为尖顶网格?已调顶点,需行列转换

平顶六边形网格转尖顶网格改造方案

核心改造步骤

  • 坐标系映射调整
    针对尖顶网格的排列逻辑,把原平顶网格的行列(q, r)做旋转式映射。假设你调整后的尖顶六边形宽为hex_width(对边距离)、高为hex_height(顶点距离),新的中心坐标计算公式应为:

    x = q * hex_width * 0.75 + (r % 2) * hex_width / 2
    y = r * hex_height + (q % 2) * hex_height / 2
    

    这个公式的核心是:尖顶网格横向相邻六边形的中心间距为hex_width * 0.75,纵向相邻(同列)间距为hex_height,且奇数列的六边形会在纵向偏移半个hex_height。

  • 邻居方向向量替换
    原平顶网格的6个邻居方向要全部替换为尖顶网格的适配版本:

    • 原右邻居 (+1, 0) → 保留
    • 原左邻居 (-1, 0) → 保留
    • 原上邻居 (0, +1) → 改为 (+1, -1)
    • 原下邻居 (0, -1) → 改为 (-1, +1)
    • 原右上邻居 (+1, -1) → 改为 (0, +1)
    • 原左下邻居 (-1, +1) → 改为 (0, -1)
  • 拾取/碰撞逻辑适配
    如果原代码有点是否在六边形内的判断逻辑,最快的适配方式是:将待判断点相对于六边形中心旋转90度,再复用原平顶的判断逻辑;也可以直接修改尖顶六边形的顶点顺序(顶部→右上→右下→底部→左下→左上),用标准多边形点-in算法重新实现判断。

  • 渲染偏移校验
    确认单个尖顶六边形的顶点坐标无误后,渲染网格时注意:奇数行(r为奇数)的每个六边形x坐标需要偏移半个hex_width,和原平顶网格的奇数列偏移逻辑对应,确保网格排列整齐。

快速验证方法

先渲染3×3的小网格,检查相邻六边形的对齐方式:尖顶网格中每个六边形的上下邻居是顶点对齐,左右邻居是边对齐,以此验证坐标系和方向向量是否正确。

内容的提问来源于stack exchange,提问作者mary-jane-s-not-the-same

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:47:22