Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Столкновение летающих квадратов (http://www.flasher.ru/forum/showthread.php?t=136727)

Zorro_13 24.02.2010 14:22

Столкновение летающих квадратов
 
Задача: Создать поле с летающими квадратами, которые сталкиваются и отлетают друг от друга.
Подскажите пожалуйста - алгоритм для подсчета угла отскока и новой скорости для обоих квадратов. То есть интересует, как после определения столкновения разбросать квадраты.

Заранее спасибо.

Zebestov 24.02.2010 14:46

ххех... ну с шарами как-то просто - абсолютно упругое нецентральное столкновение двух движущихся объектов... а квадраты... (чешет репу)

Zorro_13 24.02.2010 14:50

Zebestov
Вот именно что для кругов куча примеров и прочего, а вот для квадратов...

Добавлено: Проблема решена. Спасибо.

chabapok 24.02.2010 23:00

Имхо, тема не относится к as и к флеш вообще. В данном случае флеш - это всего-лишь реализация.

Тут чистая физика - моделирование поведения системы тел. Углы отражений, центры масс и тд.

Когда сталкиваются 2 квадрата, то мы имеем (исключая редкий случай столкновения плоскими сторонами) столкновение точки с линией. Результрующиее направление вращения зависит от угла между гранью и вектором между точкой и центром масс квадрата, который врезается точкой: если этот угол =90 градусов, то вращение остается таким же в ту же сторону. при отклонении в + скорость вращения увеличивается, при отклонении в минус - происходит отражение, а результирующая дельта силы считается (ИМХО) как момент инэрции помноженый на косинус, или как-то так. Но, если вращается тяжелый квадрат, и сталкивается с маленьким то отражения может не произойти, а просто замедление вращения.
Плюс импульс считается, и он воздействует на центр массы квадрата.

Вцелом, это задача для первокусрника, раздел матмоделирование. Проштудируйте учебник физики раздел Ньютоновская механника, подразделы вращение, импульс.

Zebestov 25.02.2010 00:24

так... много воды, но суть выловлена точно — я этого не сделал утром.
итак примерный алгоритм:

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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.