2015-09-28 112 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? –