Обнаружение столкновения - это только первый шаг. Давайте разберемся с этим.
Самое быстрое, что нужно сделать, это вычислить их квадратные ограничивающие рамки и посмотреть, не сталкиваются ли они. Две стороны должны пересекаться (сверху 1 и снизу или 2, и слева от 1 и справа от 2, или наоборот), чтобы ограничивающие рамки перекрывались. Нет совпадений, нет столкновений.
Теперь, когда они do перекрываются, вам нужно вычислить расстояние между ними. Если это расстояние больше суммы радиусов шариков, то столкновения нет.
Хорошо! У нас два шара сталкиваются. Теперь что? Ну, они должны отскакивать друг от друга. То, как они отскакивают, зависит от нескольких факторов.
Первое - это их эластичность. Два отскакивающих друг от друга резиновых шара отскакивают не так, как два стеклянных шара.
Вторая - их начальная скорость. Инерция заявляет, что они захотят продолжать двигаться в том же направлении, в котором начали.
Третья масса шаров. Шар с меньшей массой отскочит от гораздо большей массы с большей скоростью.
Давайте сначала разберемся со вторым и третьим факторами, поскольку они взаимосвязаны.
Два шара редко попадают точно в тупик. Скользящие удары гораздо вероятнее. В любом случае, удар будет происходить вдоль нормали касательной, где сталкиваются шары. Вам необходимо рассчитать векторную составляющую обоих по этой нормали, учитывая их начальные скорости. Это приведет к паре нормальных скоростей, которые оба шара приведут к столкновению. Сложите сумму и сохраните ее где-нибудь под рукой.
Теперь мы должны выяснить, что каждый шар отнимет у него. Результирующая нормальная скорость каждого шара обратно пропорциональна массе данного шара. То есть, взять обратную величину массы каждого шара, сложить обе массы вместе, а затем выделить результирующую нормальную скорость от столкновения на основе отношения массы шара к сумме обратной величины массы обоих шаров. Затем добавьте к этому тангенциальную скорость, и вы получите результирующую скорость шара.
Эластичность в основном та же самая, за исключением того, что она требует некоторого базового исчисления из-за того, что шары все еще движутся даже при сжатии. Я оставлю это вам, чтобы найти соответствующую математику.