Есть два круглых объекта, которые передвигаются с (x1, y1) к (x1 + dx1, y1 + dy1) и (x2, y2) к (x2 + dx2, y2 + dy2) соответственно, в промежутке времени. Нужно определить, было ли между ними столкновение.
Согласно моей нехитрой логике, проверка заключается в нахождении t для этой формулы:
((x1 + dx1*t) - (x2 + dx2*t))2 + ((y1 + dy1*t) - (y2 + dy2*t))^2 <= (r1 + r2)^2 (
более читаемый вариант)
Если 0 <= t <= 1, то объекты сталкивались.
Теперь собственно
проблема - я не могу придумать, как сделать для этого функцию, что принимала бы упомянутые 8 значений и возвращала t для них.
Мои попытки разложить данную формулу на бумаге пока что закончились лишь более длинной формулой с тремя группами значений, домножаемых на 1, t, t^2 соответственно.
Данные вычисления предназначены для проверки столкновений в играх с "свободным" количеством кадров в секунду, где неизвестна точная граница производительности для отдельного игрока/устройства.
Предложения по реализации этого (математика/псевдокод/идеи?) и аналогичные алгоритмы для достижения данной цели приветствуются.
Хорошего дня.