Для двух кругов, движущихся линейно, достаточно просто рассчитать время столкновения: http://twobitcoder.blogspot.com/2010/04/circle-collision-detection.html
Предполагается, что круги имеют фиксированные начальные точки и фиксированные траектории движения, а также рассчитывается время столкновения.
Возможно ли сделать это наоборот:
Круг 1: Начальная точка X1, скорость Y1 VX1, VY1 (фиксированная начальная точка, фиксированная линейная траектория движения), радиус R1
Круг 2: Начальная точка X2, скаляр скорости Y2 (1 м / с и т. Д.) (Фиксированная начальная точка, фиксированная скорость, неизвестное направление), радиус R2
Можно ли определить положение столкновения двух кругов за минимальное время в пути?
т.е.
Круг 1 начинается с 0,0 и движется со скоростью 1,0 (1 единица вправо за раз)
Круг 2 начинается с 5,5 и может двигаться 1 единицу времени
Какой будет позиция столкновения (или VX2, VY2 окружность 2 должна была бы двигаться внутрь), чтобы 2 окружности сошлись в самое низкое время T.
Радиус обоих кругов составляет 1
В этом примере решение будет где-то в районе круга 1, находящегося в точке 3,0 в момент 3. Вопрос кажется довольно сложным, поскольку у вас есть неизвестные переменные: точка столкновения, время столкновения, VX2, VY2. Хотя VX2 и VY2 будут ограничены | VX1 | + | VX2 | = 1.
Причина вопроса в том, чтобы указать кружку 2, куда он должен двигаться, чтобы «поймать» кружок 1.
Решением для грубой силы было бы проверить положение круга 1 на каждом временном интервале и рассчитать, столкнется ли круг 2 с кругом 1, если будет сказано, что нужно двигаться в эту точку - но вы можете пропустить точки столкновения движущихся кругов. быстро или получить неоптимальную точку и т. д.