【问题标题】:C++ Connected Hexagons on a Tile瓷砖上的 C++ 连接六边形
【发布时间】:2014-03-27 11:02:46
【问题描述】:

我有一个问题,我需要在我的图表中通过它们的中心(我将其称为节点)来表示瓷砖上的六边形。给定一块六边形,如何找到两个六边形 xy 是否相连?


(来源:domathtogether.com

以下内容适用于在二维空间中位置的六边形,但是我想用整数坐标(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3) etc 来表示它们的位置。

if (n1->getPoint().getEuclideanDistance(n2->getPoint()) < diameter)
{
    // The two are connected.
}

【问题讨论】:

  • 假设所有的六边形都具有相同的大小,您只需要在每隔一行上为水平位置应用一个偏移量。垂直步长始终保持不变。这样你就可以从整数坐标切换到欧几里得坐标,你可以使用你原来的方法。
  • 这是什么combinedRadius?我假设“连接”意味着六边形有一个共享的边缘。
  • 这只是d2r 的值。所有六边形都将具有相同的恒定半径。

标签: c++ hexagonal-tiles


【解决方案1】:

让我们假设六边形的编号为 012345(顶行 0)、0123456(中间行 1)、012345(底行 2):当它们中的任何一个时,它们会接触

  • 在同一行中的索引相差 +/-1,或

  • 在相差 +/-1 的行中,并且索引等于或相差 +1 或 -1,具体取决于行奇偶校验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2018-05-28
    • 2019-12-20
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多