![]() |
Сместить мяч при отскоке от стены , чтобы убрать погрешность
Здравствуйте, появилась проблема, мяч летит в стену под углом,
при ударении в стену, он немного "входит" в нее(получается 2 точки пересечения со стеной), нужно СМЕСТИТЬ его обратно (по направлению противоположному вектору движения) на такое расстояние чтобы была одна точка соприкосновения со стеной, и уже потом менять вектор движения как угол падения = углу отражения. Так вот каким образом найти это СМЕЩЕНИЕ, чтобы не накапливалась ошибка. |
Найти точку пересечения отрезка стены с отрезком перемещения мяча.
http://stackoverflow.com/questions/5...ents-intersect |
Вложений: 1
Вот нарисовал рисунокВложение 31764
О2 - точка где сейчас мяч, должен он в итоге оказаться в О1, чтобы его можно было из этой точки отразить. O2A - дистанция между центром мяча и стеной, O2B - радиус мяча, A - точка идеального касания мяча и стены(когда мяч не вошел в стену и центр его в О1) V - вектор скорости мяча, нужно найти вектор O2 - O1, Он равен DB. Цитата:
|
В общем случае задачу решает ТРО(Теорема о разделяющих осях)Она дает вектор наикротчайшего выхода одного тела из другого.В инете был супер годный мануал по ней на примере игры N но похоже его выпилили.Очень жаль.Может у кого-нибудь бэкап сохранился? Такие статьи нельзя терять
|
Может эта статья вам поможет http://www.flasher.ru/forum/blog.php?b=182
|
Цитата:
http://www.dyn4j.org/2010/01/sat/ тро не делает того, что нужно тсу. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Или не устраивает,что вектор наикротчайшего выхода(ВНВ) не всегда будет колинеарен направлению движения?Тогда можно считать проекцию ВНВ на скорость и двигать шар на полученный результат.Хотя если шар не слишком быстро носится ВНВ будет почти параллелен скорости. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
в программе шаг допустим равен 16мсек, за эти 16мс шар встревает в стену. нужно найти когда именно шар касается стены. допустим это было на 6мсекунде, отменяем бракованные 16мсекундные изменения и применяем 6мсекундные, а потом еще и 10мсекундные, вот и все |
ну так используйте box2d или nape, там такое довольно легко построить
Добавлено через 3 минуты ну а так, нужно просчитывать траекторию на кадр вперёд, у нас же есть вектор направления движения, если в следующем кадре будет столкновение, находим точку касания и и просто в след кадре ставим шарв эту точку, при этом чем выше частота кадров, тем меньше погрешность |
вот его -то длину мне и нужно найти, он параллелен вектору V, я у уже близок к решению, вычисляю угол DBA, через него хочу найти
|
Цитата:
Цитата:
|
так же потом можно вычислить время, через которое будет столкновение, отнять от времени, которое длиться один кадр, посчитать на какое расстояние шар должен пройти после столкновения за время кадра и прибавить этот расстояние к следующему кадру, где уже шар отскакивает. С точки зрения математики должно быть хорошо
|
Цитата:
Добавлено через 47 секунд Цитата:
|
Цитата:
|
Цитата:
|
вот, нашёл серию интересных уроков, которую сам смотрел в начале, у них есть урок как сделать то, что вы хотите
|
Цитата:
Добавлено через 1 минуту Вообще не понял какое отношение BA имеет к проблеме |
Цитата:
|
Вложений: 1
я думал вы вчера еще решили
http://www.fxyz.ru/формулы_по_геомет..._треугольника/ Вложение 31765 (убогие онлайн рисовалки ненависть) зная три угла и один катет прямоугольного треугольника найти гипотенузу |
да, вчера решил, спасибо за ссылки)
|
| Часовой пояс GMT +4, время: 03:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.