Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > -De-

Оценить эту запись

Isometric sorting

Запись от -De- размещена 23.05.2011 в 00:49
Обновил(-а) -De- 03.06.2011 в 22:17

As3isolib обладает фатальным недостатком, потому написал свою =)
Что в ней хорошо: быстрая, около 70000 (ещё быстрее во 2-й версии) прямоугольников/сек сортирует на моем 5-летнем амд 2.8 ггц.
Что плохо: строго 2д сетка, вся сетка обязана быть покрыта прямоугольниками, сортирует только прямоугольники, вид только "ромб", никаких параллелограммов.
addChild и компания тормозят, можно считать 70к/сек - без них, хотя не совсем (один раз добавить можно). Я собираюсь рендерить в битмапу, так что мне не важно =)
Идея алгоритма - прямоугольник можно рендерить, когда его соседи сверху (т.е. непосредственно прилегающие к верхней левой и верхней правой стороне клетки) отрендерены. Они как-то там считаются, выкидываются отрисованные, добавляются кандидатов в рисование. Думаю код не оч. страшен, если кто-то разбираться будет. Вроде бы довольно линеен алгоритм по числу клеток сетки/числу прямоугольников на рандомных полях.
Собираюсь применять в игрушке типа сим сити, интересно, что может плохого всплыть.
UPD: 2-я версия. В ней предварительно находятся соседи каждого ректа и другое по мелочи, отчего она быстрее раза в 3-4 (предрасчет соседей не считая). Плюс добавилась функция "отсортировать ректы, имеющие общие клетки с прямоугольником". Самый медленный случай поля 50х50 (это каждая клетка - рект) считает за 8 мсек или 300000клеток/сек.
Код сортировки всего поля стал намного читабельнее (71 строка метод). Функция, сортирующая в ректе дёргает его же, но перед тем затирает соседей, не входящих в этот рект, а потом восстанавливает их.
Использование естессно свободное, если вдруг в чём-то большом, то напишите в лс., оч. интересно.
FD проект, картинка для привлечения внимания:
Изображения
Тип файла: jpg sample.jpg (91.9 Кб, 931 просмотров)
Вложения
Тип файла: rar isosort.rar (66.9 Кб, 222 просмотров)
Тип файла: rar isosort2.rar (23.5 Кб, 279 просмотров)
Всего комментариев 6

Комментарии

Старый 23.05.2011 02:38 nOobCrafter вне форума
nOobCrafter
спс, на днях гляну, как раз as3isolib немного не устраивает.
Старый 23.05.2011 12:15 Волгоградец вне форума
Волгоградец
 
Аватар для Волгоградец
Неплохо. Хотел найти косячок на картинке - не нашел - все честно отсортировано.
Старый 03.06.2011 22:20 -De- вне форума
-De-
 
Аватар для -De-
Апдейт - теперь в 3 какбэ раза быстрее, чуток юзабельнее и значительно понятнее код)
Старый 28.11.2011 23:27 Yuliy вне форума
Yuliy
Цитата:
As3isolib обладает фатальным недостатком
а каким недостатком?
можно 3ю версию увидеть, код пересмотрю, у меня гаксагонная сетка.. попробую переделать, а вообще впечатляет
Старый 29.11.2011 01:55 Котяра вне форума
Котяра
 
Аватар для Котяра
Цитата:
а каким недостатком?
Не своё)
Старый 01.11.2012 17:19 cpu вне форума
cpu
Ваш способ как работает с объектами меняющими свою позицию (движущимися). Т.е. придется переинициализировать все прямоугольники по новой (это я исхожу из "вся сетка обязана быть покрыта прямоугольниками")?
 

 


Часовой пояс GMT +4, время: 22:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.