Изометрические координаты, ромбовидная форма, нежелательное пространство между плитками

Я работаю с SMFL / C ++ для создания 2D-изометрического игрового движка, я получил это, когда я делаю изометрические вычисления:

введите описание изображения здесь

Вот моя формула для расчета изометрических координат в моем 2D движке:
Для координат I-J у меня есть:

x = (I - J) * (tileWidth / 2);
y = (J + I) * (tileHeight / 2);

//Totally working with classics tiles

РЕДАКТИРОВАТЬ: моя проблема из-за формы моей плитки это куб, но я понятия не имею, как это исправить. Неужели мне действительно пришлось делать сложные математические вычисления для обработки 3D-объектов (я бы предпочел этого избежать), или я могу просто немного изменить формулу?

РЕДАКТИРОВАТЬ 2: Решение: int isoY = (x + y) * (height / 4);

1

Решение

Во-первых, если это 2D-движок, мне интересно, почему есть 3 измерения, почему и как вы используете z в своем движке.

Предполагая, что вы хотите иметь план плиток в изометрической проекции ((x, y) в пикселях) с учетом координат (I, J) в количестве плиток в ортографической проекции.
В этом случае ваша формула для х и у меня в порядке заданные tileWidth и tileHeight верны (т.е. значение в изометрической проекции). И вам не нужно использовать любой z.

С другой стороны, если ваша проблема состоит в том, чтобы получить (x, y) пиксельные координаты трехмерного объекта с заданными (x, y, z) декартовыми координатами, я предлагаю вам прочитать это: Вычисление пиксельных координат трехмерной точки

Если я ошибся, я отредактирую или удалю.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]