как эффективно отслеживать использование пространства на карте, как объектов, так и свободных площадей - PullRequest
2 голосов
/ 02 декабря 2009

ОК. Я начинаю с пустой карты размером 512х512 = 262144 пикселей / местоположений.

Мне нужен способ эффективно рисовать на нем некоторые объекты, а затем я смогу найти области свободного пространства, чтобы впоследствии в эти свободные области можно было добавить больше разных объектов. Я не могу найти лучший способ хранения этих данных или алгоритмы для поиска свободных областей.

У меня было рабочее решение, но вычисление заняло целую вечность. Я работаю с AS3, на случай, если это повлияет на лучшее решение.

Любой совет? спасибо.

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Ваша проблема почти идентична проблеме выделения памяти в операционных системах - там также появляются проблемы фрагментации, очистки, соответствующего использования непрерывного пространства. Я бы прочитал, как эта проблема решается в ОС: начать в Википедии .

0 голосов
/ 02 декабря 2009

Первое, что приходит на ум, - это использовать методы заполнения полигонов. Рассмотрим ваше пространство как набор строк сканирования, по одной строке сканирования на координату Y. В каждой строке сканирования храните список координат X, представляющих переходы между свободным и занятым пространством.

0 голосов
/ 02 декабря 2009

Существует множество методов для работы с растровыми изображениями в классах Bitmap и BitmapData.

Я никогда не делал ничего подобного, но вы можете попробовать. Я считаю, что лучший подход - рисовать объекты на карте. Затем используйте метод bitmapData.getColorBoundsRect (), чтобы получить несвободные области. Эти нативные методы AS3 очень, очень быстрые!

Вот документация: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/BitmapData.html

Ура, CaioToOn!

...