Я прочитал здесь десятки вопросов SO (и не только), касающихся обнаружения столкновения арканоидов, а именно, столкновения движущегося круга с прямоугольником, но все они спрашивают, как обнаружить столкновение или как определить, какая сторона прямоугольник мяч попадает. Мой вопрос немного другой - он касается вычисления нового направления скорости в том случае, когда мяч достигает угла прямоугольника.
Для простоты давайте предположим, что Vx >= 0
и Vy <= 0
, то есть мяч идет снизу слева вверх и вправо, а также предположим, что я знаю, что он попадет в нижнюю часть прямоугольника. Зеленая стрелка показывает приблизительное направление мяча, а синяя точка показывает первую точку на линии, содержащей нижнюю сторону прямоугольника, в который попадает шар. Если эта точка находится строго в нижней части прямоугольника, то все тривиально - просто измените Vy
на -Vy
. Однако когда эта точка находится за пределами нижней стороны, это означает, что первой точкой прямоугольника, к которой будет касаться шар, будет его левый нижний угол, и в этом случае я не думаю, что изменение Vy
на -Vy
верно. Я думаю, что новый угол скорости должен зависеть от расстояния синей точки до угла. Также я думаю, что должен измениться не только Vy
, но и Vx
(возможно, сохраняя длину V-вектора).
Итак, как мы вычисляем новые Vx и Vy, когда достигаем угла ? Если вы знаете какие-либо хорошие ссылки на этот вопрос, я буду рад их узнать. Также обратите внимание, что меня больше интересует абсолютная физическая модель этого, а не простое в коде оптимизированное приближение. Вы можете предположить, что здесь нет вращения. Большое спасибо заранее