![]() |
имитация бегущей толпы
содержимое:
множество объектов (условимся кружков диаметром 5px) расположенных случайно на сцене. действие: каждый объект стремиться занять свое положение, заданное изначально. особенность: объекты не должны пересекаться, пока ищут свое место, т.е. будто это бегущие люди. пример (схематично): Код:
варианты: 1. при возможном столкновении один объект останавливается и ждет, пока пробежит другой, после чего продолжает движение. 2. объекты обходят друг друга. вывод: решить задачу |
Это вам в вакансии.
|
Цитата:
|
Простите... Не так выразился. Изначально идея планировалась как задача. Иной цели не преследуется.
исправил |
А что вы ждете? Готовый код от кого-то по недодуманному алгоритму "почти AI"?
|
Цитата:
|
Цитата:
Например, ситуация: Код:
1 2 3 А вообще, "непересечение" решается коллизией (поиск в помощь). |
Ребята! Все гораздо проще. Не ищите во мне и задании зацепок.
Ни я, ни кто-то не собирается использовать это для игры или еще чего бы то там ни было... Просто я предложил решить такую задачу, потому что я ее решить не смогу, но мне интересно, как это осуществить. Жень Шень, если человек не проходит между рядом стоящими людьми, то он попросит их уступить ему дорогу. Т.е. предложенная Вами цепочка должна разомкнуться, пропустить недостающего и стать каждый на свое место. ... В принципе, если тема совсем мертвая, можно ее удалить. Это не составит труда и проблем. |
Между прочим, в этой теме никто и не говорил про игру.
Если вам интересно - вам и разбираться. Если вам нужно готовое решение - это труд и время, которые должны быть оплачены. Если вы делаете решение сами и у вас возникли затруднения в конкретных моментах, на форуме вам могут помочь советом. Делать что-то за вас никто не будет, у всех людей есть собственные интересные им задачи и дела, и нет никакой причины просто так заниматься вашими делами в ущерб своим. |
Цитата:
Автор, задача интересная, но действительно, если это коммерческий проект, то работа должна оплачиваться. Если вам она просто интересна - разбирайтесь и начните с написания алгоритма и псевдокода. Если праздный интерес - можете попытаться дождаться, когда кого-то тоже заинтересует настолько сильно, что этот кто-то попробует реализовать этот механизм, либо поищите готовы решения в интернете, хотя бы на уровне математической модели или программного алгоритма. |
VVall, видимо подсознательно что-то сработало, что это будет интересно еще кому-то, как сказал mooncar.
mooncar прав. Не должны пересекаться сами тела объектов. Дело в том, что я могу логически словами объяснить общий принцип работы и перебрать варианты, но написать рабочую программу я не сумею, т.к. у меня нет такой базы знаний в области программирования... |
У всех людей изначально нет базы знаний. Начните делать, в процессе появятся знания.
|
почитайте про волновой алгоритм, кажись так называеться, с помощью него можна такие задачи решать... Надо смотреть )
|
Вложений: 1
to mooncar
Под непересечением я как и автор имел ввиду объекты а не траектории. Поэтому и задал вопрос, как "человек-пятерка" должен "рассталкивать" уже вставших на свои места. Само движение отдельных экземпляров и коллизию можно решить (прикладываю ну очень старый пример падения шаров), заменив вектор "падения" на "вектор стремления" занять свое новое место. А вот задачу "расступитесь, дайте пройти" - не знаю. |
вижу как минимум два пути:
1.Простой: каждый чел занимает одну клетку на поле и может пойти в соседнюю пустую. 2.Сложный: люди немного отличаются по размерам и двигаются по кривым траэкториям. для простого пути люди просто идут к своим местам по вертикали и горизонтали, естественно застряют и уже потом договариваются кто и кому уступает место чтобы пройти (уступают место даже те кто свои места уже занял) а вообще идеальным решением будет уход толпы в сторону и построение по шеренгам, ток это уже не толпа а армия получается )) |
Я бы сделал как вот тут
|
| Часовой пояс GMT +4, время: 21:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.