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

使用X&Y坐标在地图上查找相邻的六边形瓷砖

郎健柏
2023-03-14

我一直在努力寻找解决这个问题--所以我真的必须寻求帮助。

我创建了一个基于CSS的游戏地图,它以六边形瓷砖的形状覆盖了div(就像桌面游戏一样)。我正在尝试查找哪些瓷砖与当前活动瓷砖相邻。

// load the map DIV tags (90 tiles)

if (isset($_GET['x'])) {
    $gl_map_x = $_GET['x'];
} else $gl_map_x = 0;

if (isset($_GET['y'])) {
    $gl_map_y = $_GET['y'];
} else $gl_map_y = 0;

if (isset($_GET['mapid'])) {
    $gl_map_id = $_GET['mapid'];
} else $gl_map_id = 42;                         

$i = 1;
$x = 0;
$y = 0;
while ($i <= 90) {
echo "<div class='hexagon hexagon" . $i . "' onclick=\"window.location=('index.php?mapid=". $i . "&x=" . $x . "&y=" . $y . "')\"><div class='hexagon-in1'>";
    echo "<div class='hexagon-in2'>";
        if ($i == $gl_map_id) { 
            echo "<img class='hexstar" . $i . "' src='images/map_star1.png' />";
        } 

        $distance = round(sqrt(pow($gl_map_x - $x, 2) + pow($gl_map_y - $y, 2)), 2);                                        
        echo "<div style='color:#ffffff; padding-left:48px; padding-top:30px;'>" . $x . ", " . $y . "<br />" . $distance . "</div>";
        //echo "<div style='color:#ffffff; font-weight:bold; padding-left:48px; padding-top:30px;'>" . $distance . "</div>";
        //echo "<div style='color:#ffffff; padding-left:48px; padding-top:30px;'>" . $i . "</div>";                                         

    echo "</div></div></div>";
    $i++;
    $x = $x + 63;
        if ($x > 756) { 
            $x = 63;
            $y = $y + 54;
        } elseif ($y == 432) {
            $x = $x + 63;
        }
}

?>  

有什么建议吗?

共有1个答案

仲孙兴平
2023-03-14

没有草图解释有点困难,但我认为解决方案相当简单。六边形的x坐标是可以的,但一半的y坐标需要校正。当我点击上面的链接时,标记的六边形的坐标为x=315,y=162。此列中所有单元格的y坐标都需要增加27。因此,y坐标应该是189,而不是162。对于正上方的单元格,y coord。应从108改为135。在该单元格之上增加y coord。从54岁到81岁,以此类推。每隔一列,也就是所有六边形高度与我们刚才所说的高度相同的列,都需要做这个改变。如果你做了这个改变,毕达哥拉斯计算就可以测试相邻的单元格,因为它会得到六边形中心之间的距离。希望能有所帮助。祝你的比赛好运。

 类似资料:
  • 我被一个似乎很容易解决的问题所困扰,但我似乎找不出正确的公式。 我有一个立方体坐标系中六边形群的列表。我知道群的立方体坐标,但我需要计算给定群中一个小六边形的“全局”坐标。 例如,在下图中,我知道和的坐标。如果每个组都有相同的半径(在本例中半径为1),并且它们之间不重叠(让我们把它看作是从0、0、0开始的组的平铺,从而创建一个十六进制网格),那么我如何计算GroupB中心平铺的坐标呢? 任何帮助都

  • 这更多的是一个方法问题,而不仅仅是技术问题。 我有一个生成的球体,分解成六边形作为一个网格。每一个六边形瓷砖都是一种不同的地形,例如,山,丘陵,海洋,飞机等。我想在3D中把每一种地形类型画成几个网格的集合,代表一种相应的地形类型。 现在最大的问题是如何在运行时将地形网格调整到每个六边形面,这取决于地形类型,在运行时地形类型也会发生变化,例如,地形变形。同时,考虑到六边形并不是完全正则或相等的。 缩

  • 我试图画一系列给定坐标的矩形,这只是一个x和y值的列表。 这是我的密码: 此代码应绘制类似以下内容的形状: 相反,它画的东西没有连贯的形状。

  • 我正在使用PdfBox读取pdf中的Xobjects,Xobjects是类型形式,我注意到左下y和右上y的值是错误的,Illustrator/pdf查看器显示了正确的呈现 这是我的代码,用来找到y坐标 您可以在此查看pdf链接:https://www.justbeamit.com/zxime

  • 我有一个堆叠的条形图。我想画一条线,就像对堆叠的条形图的几个条形进行分组一样。 一些人请帮助绘制这些线使用D3。 JS: