![]() |
Столкновение летающих квадратов
Задача: Создать поле с летающими квадратами, которые сталкиваются и отлетают друг от друга.
Подскажите пожалуйста - алгоритм для подсчета угла отскока и новой скорости для обоих квадратов. То есть интересует, как после определения столкновения разбросать квадраты. Заранее спасибо. |
ххех... ну с шарами как-то просто - абсолютно упругое нецентральное столкновение двух движущихся объектов... а квадраты... (чешет репу)
|
Zebestov
Вот именно что для кругов куча примеров и прочего, а вот для квадратов... Добавлено: Проблема решена. Спасибо. |
Имхо, тема не относится к as и к флеш вообще. В данном случае флеш - это всего-лишь реализация.
Тут чистая физика - моделирование поведения системы тел. Углы отражений, центры масс и тд. Когда сталкиваются 2 квадрата, то мы имеем (исключая редкий случай столкновения плоскими сторонами) столкновение точки с линией. Результрующиее направление вращения зависит от угла между гранью и вектором между точкой и центром масс квадрата, который врезается точкой: если этот угол =90 градусов, то вращение остается таким же в ту же сторону. при отклонении в + скорость вращения увеличивается, при отклонении в минус - происходит отражение, а результирующая дельта силы считается (ИМХО) как момент инэрции помноженый на косинус, или как-то так. Но, если вращается тяжелый квадрат, и сталкивается с маленьким то отражения может не произойти, а просто замедление вращения. Плюс импульс считается, и он воздействует на центр массы квадрата. Вцелом, это задача для первокусрника, раздел матмоделирование. Проштудируйте учебник физики раздел Ньютоновская механника, подразделы вращение, импульс. |
так... много воды, но суть выловлена точно — я этого не сделал утром.
итак примерный алгоритм: 1. определяем какими гранями столкнутся квадраты — горизонтальными или вертикальными. /* далее, для примера, считаем что квадраты соприкоснутся вертикальными гранями и соотв. отскок будет по оси Х */ 2. считаем, что трение между квадратами отсутствует, значит Y-составляющая вектора скорости каждого квадрата не изменится. фиксируем ее для каждого. 3. все вычисления производим над X-составляющими вектора по формулам абсолютно упругого центрального столкновения 4. новые составляющие X и старые Y складываем в новый вектор скорости для каждого квадратика. Фсьо вроде. В случае соприкосновения горизонтальными гранями проделываем то же, только оси меняются. |
| Часовой пояс GMT +4, время: 20:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.