2015-09-28 9 views
1

Я использую шестигранную решетку с плоским верхом (согласно приведенному здесь руководству http://www.redblobgames.com/grids/hexagons/).Плоские вершины гексагональной координаты сетки координат Координаты пикселов

enter image description here

Мне нужно преобразовать мой куб координаты в координаты пикселей. Я прочитал Hexagonal Grid Coordinates To Pixel Coordinates, но решение, перечисленное там, требует некоторых изменений для работы с сеткой с плоской вершиной. Логика должна быть аналогична логике, описанной выше, но я не могу ее решить.

Определенно, если координаты x-координаты с плоским верхом могут использоваться в качестве координаты x пикселя. Таким образом, вычисление координаты X-пикселя из координат куба относительно просто. Предполагая, что $this->hexSize является полной шириной гекса и $cubeCoordinate представляет собой массив х, у, г координата х-координат пиксела будет:

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

Я не могу работать, хотя, как вычислить координаты у пикселя. Высота между соседними гексами должна быть недостаточно равна $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? –