平顶六边形六边形网格坐标到像素坐标
Flat topped hexes hexagonal grid coordinates To Pixel Coordinates
我正在使用平顶六角网格(遵循此处列出的手册 http://www.redblobgames.com/grids/hexagons/)。
我需要将立方体坐标转换为像素坐标。我已阅读 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
。但是如何根据立方坐标计算偏移量呢?
我已经解决了,将不同的变量插入此处列出的方程式 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;
}
我正在使用平顶六角网格(遵循此处列出的手册 http://www.redblobgames.com/grids/hexagons/)。
我需要将立方体坐标转换为像素坐标。我已阅读 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
。但是如何根据立方坐标计算偏移量呢?
我已经解决了,将不同的变量插入此处列出的方程式 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;
}