Я пытаюсь написать 2D-симуляцию шара, который отскакивает от неподвижных вертикальных и горизонтальных стен. Моделирование столкновений с гранями стен было довольно простым - просто отрицайте скорость X для вертикальной стены или Y-скорость для горизонтальной стены. Проблема в том, что шар также может сталкиваться с углами стен, где горизонтальная стена встречается с вертикальной стеной. Я уже понял, как обнаружить, когда происходит столкновение с углом. Мой вопрос в том, как мяч должен реагировать на это столкновение - то есть, как изменится его скорости X и Y в результате.2D Ball Collisions с углами
Вот список того, что я уже знаю, или знаю, как найти:
- Х и Y координаты центра шара в течение кадра, когда столкновение обнаружено
- Компоненты X и Y из скорость шара
- координаты X и Y по углу
- угол между центром шара и углу
- угол, в котором мяч движется непосредственно перед столкновением
- Сумма, которую шарик перекрывает угол, когда столкновение обнаружено
Я предполагаю, что это лучше делать вид, что угол бесконечно малый круг, так что я могу лечить столкновение между шариком и этот круг, как если бы мяч сталкивался со стеной, которая касается касательной к кругам в точке столкновения. Мне кажется, что все, что мне нужно сделать, это повернуть систему координат, чтобы выровняться с этой воображаемой стеной, перевернуть X-составляющую скорости шара в этой системе и повернуть координаты обратно в исходную систему. Проблема в том, что я понятия не имею, как программировать это.
Кстати, это идеальное моделирование. Я не воспринимаю ничего, как трение или вращение мяча. Я использую Objective-C, но мне действительно нужен общий алгоритм или какой-то совет.