Гексагональные координаты сетки с плоскими вершинами To Пиксельные координаты
Я использую гексагональную сетку с плоским верхом (следуя инструкциям, перечисленным здесь http://www.redblobgames.com/grids/hexagons/).
Мне нужно преобразовать координаты моего куба в пиксельные координаты. Я прочитал координаты шестиугольной сетки в пиксельные координаты, но приведенное там решение требует некоторых модификаций для работы с плоской вершиной сетки. Логика должна быть похожа на ту, что описана в вопросе, связанном выше, но я не могу разобраться.
Определенно, в случае гексов с плоской вершиной x-координата может использоваться как координата x пикселя Таким образом, вычисление координаты X-пикселя по координатам куба относительно просто. При условии, что $this->hexSize
общая ширина гекса $cubeCoordinate
является массивом координат x,y,z, координата x-пикселя будет:
$pixelCoordinate['x'] = $this->hexSize * $cubeCoordinate['x'] * 3/4;
Я не могу понять, как рассчитать координату Y пикселей. Высота между соседними гексами должна быть недостаточно равна $this->hexSize
, Но как рассчитать смещение на основе координат куба?
1 ответ
Я разработал это, вставляя различные переменные в перечисленные здесь уравнения. Шестиугольные координаты сетки в пиксельные координаты.
Наконец, оказалось, что координаты куба в гексагональной сетке с плоской вершиной могут быть вычислены с использованием следующего кода:
/*
* 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;
}