Гексагональные координаты сетки с плоскими вершинами 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;
        }
Другие вопросы по тегам