Вычисление ячеек, содержащихся внутри прямоугольника на изометрической сетке - PullRequest
1 голос
/ 26 февраля 2011

Учтите, что нам дана изометрическая сетка (рассмотрим что-то вроде Diablo) плиток.У нас есть некоторые меры для сетки, такие как высота сетки, ширина сетки и высота / ширина плитки.Рассмотрим это изображение: this image

Центральная ячейка сетки - это 0,0, простирающаяся изо-север (+ y), изо-юг (-y), изо-восток (+ x), iso-west (-x).

Допустим, мы нарисовали прямоугольник в произвольном месте на сетке.У нас НЕ есть изометрические позиции для прямоугольника, а есть нормальные координаты рисования для сетки, где верхний левый угол равен 0,0, а юг равен y +, правый равен x +.

Если бы мы имелиtop, left, height, width рассматриваемого прямоугольника - как мы можем вычислить массив изо-ячеек, пересекаемых нижним краем прямоугольника.

Любого языка, который вы выберете для демонстрации этого, будет достаточно.

1 Ответ

1 голос
/ 01 марта 2011

В некоторых статьях и книгах об изометрическом программировании (изометрическое программирование с Direct X7, да, оно старое, но дает обзор проблем и методов), они используют карты мыши.

Также есть метод визуализации области.карты, покрытой прямоугольником на изображении, каждая плитка получает уникальный цвет (и это только отображаемый цвет).После этого они проверяют, какие цвета на изображении, и таким образом извлекают список плиток.

Поскольку вы используете классическую изометрическую половину ширины плитки, может быть и математическое решение.К сожалению, предложенный алгоритм сильно зависит от макета вашей карты.

Код для TileSystem на основе Java можно найти здесь

...