Показать сообщение отдельно
Старый 04.02.2010, 01:40
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 8  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
если это возможно
Это точно возможно для параллельно стоящих параллелепипедов, даже c произвольными размерами без сетки.
Вопрос в том, сколько на это уйдет времени процессора.

Цитата:
Если для каждого объекта помечать все возможные потенциально закрываемые им клетки значением глубины этого объекта, и для каждого следующего объекта попадающего в эту область ставить глубину меньше той которой помечена клетка
Как-то смутно представяется работа этого алгоритма, напишите если прокатит.

Я делал по другому:
- пишем функцию сравнения 2-х объектов
в данном случае она выдает 3 результата - "1-й перед 2-м", "2-й перед первым", "не_известно". В этой функции придется учитывать не только координаты, но и размеры объектов
- сортируем пузырьком - почему-то только этот метод работал
но вместо сравнения используем эту функцию, если возвращает "не_знаю" - просто ничего с объектами не делаем - идем дальше.
Все.

Еще есть способы:

- Трюки с точками привязки изображений объектов (не работает для длинных и низких объектов)
http://www.openspace-engine.com/

- Глава "SortingAlgoritm" из книги "ActionScript for Multiplayer Games and Virtual Worlds" (сам не проверял)

P.S. Ну и если будут сильные траблы, на худой конец можно все порезать на кусочки или понаделать непроходимых областей за сложными объектами
P.S.2. Если все объекты имеют квадратную форму(1x1, 2x2, 3x3), то можно сортировать чисто по z-координате центра - все будет работать


Последний раз редактировалось expl; 04.02.2010 в 01:53.