2015-09-28 83 views
1

我使用平顶六角形网格(以下手册列在这里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。但如何基于立方体坐标计算偏移量?

回答

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; 
     } 
+0

感谢你为这个职位..我遵循同样的指导,运行到同一个问题与我的平顶格。你是否使用负坐标(0,0在中心),你如何处理?只需将网格大小的一半添加到x和y? –