![]() |
|
|
![]()
|
|
| HellanD |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Знаю что есть похожие темы но в них ответа увы нен нашел....
Задача стоит так: Нужно нарисовать шар радиусом 2...Который бы двигался в поле 300*300, А попадая на стенку упруго отскакивал бы... Подскажите какую методику применить для реализации столкновений... |
|||
|
||||
| SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
задача поставлена несколько некорректно)
если это шар, то он не может двигаться в двумерном пространстве: тогда уж в трехмерном) в простейшем случае (2d) необходимо определить факт пересечения окружности с прямой (делать это перед каждым смещением окружности на пиксел вперед) и если это пересечение есть, значит нужно изменить направление движения на противоположное (в смысле - "отскочить"), можно учитывая при этом угол отражения/отскока))) -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
| HellanD |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Да на счет шара я погарячился.... Вот и вправду при столкновении с границами я так и делал.... Но а вот в общем случае если я еще добвлю другие кружки которык будут тоже летать (в многопоточном режиме)... Как мне реализовать упругое столкновение между ними?
|
|||
|
||||
| SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
аналогично) только пересекаться будут не прямая и окружность, а еще и окружность-окружность а окружности двигаться по очереди(1-2-3-4-пауза-1-2-3-4-пауза-1-2.....), чтобы при расчете движения одного все остальные-стояли, для глаза это не будет заметно -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
| Promitheus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2007 Репутация: нет Всего: 1 |
В Microsoft DirectX SDK 9.0c за август 2006 года (может и в других есть, но я только эту сдк смотрел) есть как раз такой пример. Там сделан небольшой движок и по нажатию на левую кнопку мыши выпадает шарик и двигается по физическим законам, при столкновении между собой они также упруго отталкиваются. Всё сделано достаточно реалистично и впринципе не очень сложно закон движения по x,y,z на уровне школьной физики.
Не знаю как в реальных играх делается (наверняка как то снижают вычисления), но там цикл каждый шарик сравнивается с каждым, а потом с каждой стенкой (включая потолок и пол), если пересечинее шара с шаром, то отскок, со стенкой также, если он уже исчерпал заложенную энергию то остановка и тэдэ. Надеюсь общая идея ясна. DX SDK работает на 2003 и 2005 студии, весит порядка 600-700 метров. Лежит на сайте Майкрософта. |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 1 Всего: 24 |
Отскок шаров: в момент столкновения проводим линию через центры шаров (она будет осью x); ось y - ортогональна x (направление не важно). Находим проекции вектора скорости для обоих шаров на эти оси. Так вот, проекции скорости на ось y не изменяются, а проекции на ось x меняются местами (если шары одной массы).
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |