Обнаружение столкновения арканоида ... Снова - PullRequest
3 голосов
/ 15 июня 2011

Я прочитал здесь десятки вопросов SO (и не только), касающихся обнаружения столкновения арканоидов, а именно, столкновения движущегося круга с прямоугольником, но все они спрашивают, как обнаружить столкновение или как определить, какая сторона прямоугольник мяч попадает. Мой вопрос немного другой - он касается вычисления нового направления скорости в том случае, когда мяч достигает угла прямоугольника.

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

Итак, как мы вычисляем новые Vx и Vy, когда достигаем угла ? Если вы знаете какие-либо хорошие ссылки на этот вопрос, я буду рад их узнать. Также обратите внимание, что меня больше интересует абсолютная физическая модель этого, а не простое в коде оптимизированное приближение. Вы можете предположить, что здесь нет вращения. Большое спасибо заранее

Ответы [ 2 ]

1 голос
/ 15 июня 2011

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

1 голос
/ 15 июня 2011

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

Когда круг ударяется о стену, он вступает в контакт в одной точке. Эта единственная точка - все, что круг "знает" о стене; расположение этой точки дает вам достаточно информации для расчета нового V . Когда круг попадает в угол, он вступает в контакт в одной точке (то есть в углу), поэтому он отскакивает , как если бы он врезался в стену в этой точке .

Этого достаточно, чтобы продолжить, или вы хотите немного математики? (И если да, то как вам удобно с векторной алгеброй?)

...