Форум 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=211389)

nubideus 20.08.2015 13:04

Цитата:

Как раз задача для ТРО.
смотрим задачу:
Цитата:

нужно СМЕСТИТЬ его обратно (по направлению противоположному вектору движения)
тро дает вектор минимального перехода, а в задаче нужен совсем другой вектор.

в программе шаг допустим равен 16мсек, за эти 16мс шар встревает в стену. нужно найти когда именно шар касается стены.
допустим это было на 6мсекунде, отменяем бракованные 16мсекундные изменения и применяем 6мсекундные, а потом еще и 10мсекундные, вот и все

neonoviiwolf 20.08.2015 13:05

ну так используйте box2d или nape, там такое довольно легко построить

Добавлено через 3 минуты
ну а так, нужно просчитывать траекторию на кадр вперёд, у нас же есть вектор направления движения, если в следующем кадре будет столкновение, находим точку касания и и просто в след кадре ставим шарв эту точку, при этом чем выше частота кадров, тем меньше погрешность

Marlin 20.08.2015 13:10

вот его -то длину мне и нужно найти, он параллелен вектору V, я у уже близок к решению, вычисляю угол DBA, через него хочу найти

undefined 20.08.2015 13:12

Цитата:

тро дает вектор минимального перехода, а в задаче нужен совсем другой вектор.
да, я понял

Цитата:

Тогда можно считать проекцию ВНВ на скорость и двигать шар на полученный результат.

neonoviiwolf 20.08.2015 13:13

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

Marlin 20.08.2015 13:31

Цитата:

Сообщение от undefined (Сообщение 1185895)
На твоем рисунке ВНВ - это отрезок BD.

ВНВ насколько я понимаю - перпендикуляр к стене, на моем рисунке это AB

Добавлено через 47 секунд
Цитата:

Сообщение от neonoviiwolf (Сообщение 1185897)
Добавлено через 3 минуты
нужно просчитывать траекторию на кадр вперёд, у нас же есть вектор направления движения, если в следующем кадре будет столкновение, находим точку касания и и просто в след кадре ставим шарв эту точку, при этом чем выше частота кадров, тем меньше погрешность

да, так наверное будет проще, попробую

undefined 20.08.2015 13:38

Цитата:

ВНВ насколько я понимаю - перпендикуляр к стене, на моем рисунке это AB
Неверно.ВНВ зависит от положения шара и его глубины проникновения в препятствие и геометрически равен минимальному вектору, на который надо сместить шар, чтоб он перестал пересекаться со стеной т.е. как раз на вектор BD

Marlin 20.08.2015 13:50

Цитата:

Сообщение от undefined (Сообщение 1185904)
Неверно.ВНВ зависит от положения шара и его глубины проникновения в препятствие и геометрически равен минимальному вектору, на который надо сместить шар, чтоб он перестал пересекаться со стеной т.е. как раз на вектор BD

DBA - прямоугольный треугольник, где BD - гипотенуза, а прямой угол - А, соответственно вектор BA будет явно короче.

neonoviiwolf 20.08.2015 13:51

вот, нашёл серию интересных уроков, которую сам смотрел в начале, у них есть урок как сделать то, что вы хотите

undefined 20.08.2015 14:00

Цитата:

DBA - прямоугольный треугольник, где BD - гипотенуза, а прямой угол - А, соответственно вектор BA будет явно короче.
Короче чем что? Еще раз, я утверждаю, что искомое смещение будет равно проекции вектора BD на вектор V. Этот вектор будет противонаправлен вектору V и будет выводить шар из стенки как раз чтобы была одна точка касания.

Добавлено через 1 минуту
Вообще не понял какое отношение BA имеет к проблеме


Часовой пояс GMT +4, время: 12:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.