Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   имитация бегущей толпы (http://www.flasher.ru/forum/showthread.php?t=132444)

klenizer 12.11.2009 02:47

имитация бегущей толпы
 
содержимое:
множество объектов (условимся кружков диаметром 5px) расположенных случайно на сцене.

действие:
каждый объект стремиться занять свое положение, заданное изначально.

особенность:
объекты не должны пересекаться, пока ищут свое место, т.е. будто это бегущие люди.

пример (схематично):
Код:


                                                                             
                                                                             
                * * * 4 * * * * 2 * * 5                           
                * * * * * 1 * * * * * *                         
                * 3 * * * * * * * * * *                           
                                                                             
                                                                             
                                                                             
                                                                             
                                            0 0 0 4 0 0 0 0 0 0 0 0 
                                            0 0 0 0 0 3 0 0 0 0 0 0 
                                            0 2 0 0 0 0 5 0 0 0 0 1

0 (нули) - это движущиеся к * объекты. для примера несколькими цифрами показаны соответствующий объект и его искомое место. т.е. абсолютно хаотичное движение должно быть, но основная задача -- это создать механизм, не допускающий пересечения объектов при движении. Я так думаю это почти AI.

варианты:
1. при возможном столкновении один объект останавливается и ждет, пока пробежит другой, после чего продолжает движение.
2. объекты обходят друг друга.

вывод:
решить задачу

mooncar 12.11.2009 04:51

Это вам в вакансии.

etc 12.11.2009 09:54

Цитата:

Сообщение от klenizer (Сообщение 864968)
вывод:
если кого не затруднит, сделайте пожалуйста. буду много благодарен.

Парни из раздела «Дам денег за работу» ждут вас с распростертыми объятиями.

klenizer 12.11.2009 19:04

Простите... Не так выразился. Изначально идея планировалась как задача. Иной цели не преследуется.
исправил

mooncar 12.11.2009 19:13

А что вы ждете? Готовый код от кого-то по недодуманному алгоритму "почти AI"?

etc 12.11.2009 19:27

Цитата:

Сообщение от klenizer (Сообщение 865238)
Простите... Не так выразился. Изначально идея планировалась как задача. Иной цели не преследуется.
исправил

Ну и кому нужно решить задачу?

Жень Шень 13.11.2009 11:00

Цитата:

Сообщение от klenizer (Сообщение 864968)
особенность:
объекты не должны пересекаться

Техзадание не до конца продуманное!
Например, ситуация:
Код:

      1 2 3
      4 * 6
      7 8 9
                                                                             
                                                                             
                                                                             
5

Как 5-ке пробиться на свое место не пересекаясь?
А вообще, "непересечение" решается коллизией (поиск в помощь).

klenizer 13.11.2009 18:00

Ребята! Все гораздо проще. Не ищите во мне и задании зацепок.
Ни я, ни кто-то не собирается использовать это для игры или еще чего бы то там ни было... Просто я предложил решить такую задачу, потому что я ее решить не смогу, но мне интересно, как это осуществить.
Жень Шень, если человек не проходит между рядом стоящими людьми, то он попросит их уступить ему дорогу. Т.е. предложенная Вами цепочка должна разомкнуться, пропустить недостающего и стать каждый на свое место.
...
В принципе, если тема совсем мертвая, можно ее удалить. Это не составит труда и проблем.

VVall 13.11.2009 18:10

Между прочим, в этой теме никто и не говорил про игру.

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

mooncar 13.11.2009 18:53

Цитата:

Сообщение от Жень Шень (Сообщение 865358)
Как 5-ке пробиться на свое место не пересекаясь?

Похоже, автор имел ввиду не "непересечение" траектории, а непересечение в смысле несовпадения координат, то есть ненахождение объектов в одной и той же точке в один момент времени.

Автор, задача интересная, но действительно, если это коммерческий проект, то работа должна оплачиваться. Если вам она просто интересна - разбирайтесь и начните с написания алгоритма и псевдокода. Если праздный интерес - можете попытаться дождаться, когда кого-то тоже заинтересует настолько сильно, что этот кто-то попробует реализовать этот механизм, либо поищите готовы решения в интернете, хотя бы на уровне математической модели или программного алгоритма.

klenizer 13.11.2009 19:43

VVall, видимо подсознательно что-то сработало, что это будет интересно еще кому-то, как сказал mooncar.
mooncar прав. Не должны пересекаться сами тела объектов.
Дело в том, что я могу логически словами объяснить общий принцип работы и перебрать варианты, но написать рабочую программу я не сумею, т.к. у меня нет такой базы знаний в области программирования...

VVall 13.11.2009 19:59

У всех людей изначально нет базы знаний. Начните делать, в процессе появятся знания.

_SAM_ 14.11.2009 00:09

почитайте про волновой алгоритм, кажись так называеться, с помощью него можна такие задачи решать... Надо смотреть )

Жень Шень 16.11.2009 11:08

Вложений: 1
to mooncar
Под непересечением я как и автор имел ввиду объекты а не траектории. Поэтому и задал вопрос, как "человек-пятерка" должен "рассталкивать" уже вставших на свои места. Само движение отдельных экземпляров и коллизию можно решить (прикладываю ну очень старый пример падения шаров), заменив вектор "падения" на "вектор стремления" занять свое новое место. А вот задачу "расступитесь, дайте пройти" - не знаю.

fessor 17.11.2009 21:28

вижу как минимум два пути:
1.Простой: каждый чел занимает одну клетку на поле и может пойти в соседнюю пустую.
2.Сложный: люди немного отличаются по размерам и двигаются по кривым траэкториям.

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

а вообще идеальным решением будет уход толпы в сторону и построение по шеренгам, ток это уже не толпа а армия получается ))

gloomyBrain 17.11.2009 22:12

Я бы сделал как вот тут


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

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