Прежде всего, вам нужен угол, под которым движется шар, и угол поверхности. Таким образом, вы будете знать, под каким углом шар касается «стены».
Полагаю, вы могли бы жестко закодировать углы всех поверхностей в вашей программе после того, как вычислили их вручную.
Что касается углов, под которыми движутся шары, вы можете рассчитать угол по скоростям x и y. Например, если v (x) равно 1, а v (y) равно 1, угол будет 45 °. Вы также можете рассчитать фактическую скорость мяча, которая равна квадрату root из (1² + 1²). Это примерно 1,41, и мы рассчитали все это с помощью теоремы Пифагора.
Теперь у нас есть все 3 линии нашего прямоугольного треугольника, и мы можем вычислить все углы разными способами и без проблем. Например, я могу использовать функцию sin (а затем reverse sin ), чтобы получить угол.
sin(x) = 1 / 1.41
x = sin(-1) (1/1.41)
Мы рассчитали угол, под которым движется мяч (45 °). Предположим, что мяч касается стены, которая расположена под углом 90 °. Как изменятся скорости?
Фактическое воздействие происходит под углом 45 °. Нам нужно взглянуть на угол падения . Мы уже знаем, что скорость x инвертируется, а скорость y остается неизменной, когда мы ударяемся о стену. Как проверить, верно ли это?
Рассчитать угол удара (угол падения) = угол стены - угол шара.
Угол падения = 90 ° - 45 ° = 45 °
Рассчитайте угол, под которым будет двигаться шарик. Это угол падения + угол стены. Итак: угол перемещения = 45 ° + 90 ° = 135 °.
В этот момент вы можете сказать, что если угол составляет от 270 ° до 360 ° и от 0 ° до 90 °, скорость х положительна. В противном случае он отрицательный (он движется влево). Поскольку мы переключились с 45 ° на 135 °, скорость х теперь будет отрицательной.
Скорость Y будет положительной от 0 ° до 180 ° и отрицательной от 180 ° до 360 °.
Скорость мяча остается на уровне 1,41. Давайте, наконец, вычислим скорости x и y:
Мы знаем, что: X теперь будет отрицательным, а Y останется положительным. Но наша функция косинуса вычислит правильное значение x для нас.
Теперь у нас есть прямоугольный треугольник, где самая длинная линия - скорость вне (1.41). Две другие строки - это наши x и y. Мы получаем скорость у:
sin(135) y/1.41
y = sin(135) * 1,41 = 1
и
x = cos (135) * 1,41 = -1.