![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2006
Сообщений: 140
|
Задача: Создать поле с летающими квадратами, которые сталкиваются и отлетают друг от друга.
Подскажите пожалуйста - алгоритм для подсчета угла отскока и новой скорости для обоих квадратов. То есть интересует, как после определения столкновения разбросать квадраты. Заранее спасибо. |
|
|||||
|
Lorem ipsum
|
ххех... ну с шарами как-то просто - абсолютно упругое нецентральное столкновение двух движущихся объектов... а квадраты... (чешет репу)
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 140
|
Zebestov
Вот именно что для кругов куча примеров и прочего, а вот для квадратов... Добавлено: Проблема решена. Спасибо. Последний раз редактировалось Zorro_13; 24.02.2010 в 16:36. |
|
|||||
|
Имхо, тема не относится к as и к флеш вообще. В данном случае флеш - это всего-лишь реализация.
Тут чистая физика - моделирование поведения системы тел. Углы отражений, центры масс и тд. Когда сталкиваются 2 квадрата, то мы имеем (исключая редкий случай столкновения плоскими сторонами) столкновение точки с линией. Результрующиее направление вращения зависит от угла между гранью и вектором между точкой и центром масс квадрата, который врезается точкой: если этот угол =90 градусов, то вращение остается таким же в ту же сторону. при отклонении в + скорость вращения увеличивается, при отклонении в минус - происходит отражение, а результирующая дельта силы считается (ИМХО) как момент инэрции помноженый на косинус, или как-то так. Но, если вращается тяжелый квадрат, и сталкивается с маленьким то отражения может не произойти, а просто замедление вращения. Плюс импульс считается, и он воздействует на центр массы квадрата. Вцелом, это задача для первокусрника, раздел матмоделирование. Проштудируйте учебник физики раздел Ньютоновская механника, подразделы вращение, импульс. |
|
|||||
|
Lorem ipsum
|
так... много воды, но суть выловлена точно — я этого не сделал утром.
итак примерный алгоритм: 1. определяем какими гранями столкнутся квадраты — горизонтальными или вертикальными. /* далее, для примера, считаем что квадраты соприкоснутся вертикальными гранями и соотв. отскок будет по оси Х */ 2. считаем, что трение между квадратами отсутствует, значит Y-составляющая вектора скорости каждого квадрата не изменится. фиксируем ее для каждого. 3. все вычисления производим над X-составляющими вектора по формулам абсолютно упругого центрального столкновения 4. новые составляющие X и старые Y складываем в новый вектор скорости для каждого квадратика. Фсьо вроде. В случае соприкосновения горизонтальными гранями проделываем то же, только оси меняются.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:38. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|