| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Движение |
| Автор: HellanD 3.5.2007, 08:50 |
| Знаю что есть похожие темы но в них ответа увы нен нашел.... Задача стоит так: Нужно нарисовать шар радиусом 2...Который бы двигался в поле 300*300, А попадая на стенку упруго отскакивал бы... Подскажите какую методику применить для реализации столкновений... |
| Автор: SparF 3.5.2007, 09:08 |
| задача поставлена несколько некорректно) если это шар, то он не может двигаться в двумерном пространстве: тогда уж в трехмерном) в простейшем случае (2d) необходимо определить факт пересечения окружности с прямой (делать это перед каждым смещением окружности на пиксел вперед) и если это пересечение есть, значит нужно изменить направление движения на противоположное (в смысле - "отскочить"), можно учитывая при этом угол отражения/отскока))) |
| Автор: HellanD 3.5.2007, 09:18 |
| Да на счет шара я погарячился.... Вот и вправду при столкновении с границами я так и делал.... Но а вот в общем случае если я еще добвлю другие кружки которык будут тоже летать (в многопоточном режиме)... Как мне реализовать упругое столкновение между ними? |
| Автор: SparF 3.5.2007, 09:44 |
аналогично) только пересекаться будут не прямая и окружность, а еще и окружность-окружность а окружности двигаться по очереди(1-2-3-4-пауза-1-2-3-4-пауза-1-2.....), чтобы при расчете движения одного все остальные-стояли, для глаза это не будет заметно |
| Автор: Promitheus 3.5.2007, 13:45 |
| В Microsoft DirectX SDK 9.0c за август 2006 года (может и в других есть, но я только эту сдк смотрел) есть как раз такой пример. Там сделан небольшой движок и по нажатию на левую кнопку мыши выпадает шарик и двигается по физическим законам, при столкновении между собой они также упруго отталкиваются. Всё сделано достаточно реалистично и впринципе не очень сложно закон движения по x,y,z на уровне школьной физики. Не знаю как в реальных играх делается (наверняка как то снижают вычисления), но там цикл каждый шарик сравнивается с каждым, а потом с каждой стенкой (включая потолок и пол), если пересечинее шара с шаром, то отскок, со стенкой также, если он уже исчерпал заложенную энергию то остановка и тэдэ. Надеюсь общая идея ясна. DX SDK работает на 2003 и 2005 студии, весит порядка 600-700 метров. Лежит на сайте Майкрософта. |
| Автор: likehood 3.5.2007, 14:36 |
| Отскок шаров: в момент столкновения проводим линию через центры шаров (она будет осью x); ось y - ортогональна x (направление не важно). Находим проекции вектора скорости для обоих шаров на эти оси. Так вот, проекции скорости на ось y не изменяются, а проекции на ось x меняются местами (если шары одной массы). |