平顶六边形六边形网格坐标到像素坐标

时间:2015-09-28 15:54:43

标签: math coordinate-systems hexagonal-tiles

我使用的是平顶六边形网格(按照此处列出的手册http://www.redblobgames.com/grids/hexagons/)。

enter image description here

我需要将立方体坐标转换为像素坐标。我已阅读Hexagonal Grid Coordinates To Pixel Coordinates,但其中列出的解决方案需要进行一些修改才能使用平顶网格。逻辑必须类似于上面链接的问题中描述的逻辑,但我不能解决它。

绝对在平顶六角的情况下,x坐标可以用作x像素坐标。因此,从立方体坐标计算X像素坐标相对容易。假设$this->hexSize是十六进制的总宽度,$cubeCoordinate是x,y,z坐标的数组,x像素坐标将是:

$pixelCoordinate['x'] = $this->hexSize * $cubeCoordinate['x'] * 3/4;

虽然如何计算y像素坐标,但我无法解决。相邻六边形之间的高度应该不足$this->hexSize。但是如何根据立方坐标计算偏移?

1 个答案:

答案 0 :(得分:2)

我已经解决了,将不同的变量插入到此处列出的等式中Hexagonal Grid Coordinates To Pixel Coordinates

最后发生的是,平顶六边形网格中的立方体坐标可以使用以下代码计算:

   /* 
* Changes cube coordinates into offset one
        */
        public function coordinates_CubetoOffset($cube)
        {

            $return['x'] = $this->hexSize * $cube['x'] * 3/4;
            $return['y'] = sqrt(3)/2 * $this->hexSize * ($cube['x']/2 + $cube['y']);


            return $return;
        }