Кратчайший путь до перекрестка

Я задал этот вопрос около 2 месяцев назад, но не нашел ни одного из ответов достаточно полезным. Так что я даю ему еще один шанс. Я думаю, что это была моя вина, что я не описал его достаточно хорошо. Итак, давайте попробуем еще раз.


(источник: bja888.com)

Вот примерное представление о том, чего я пытаюсь достичь.
Цель состоит в том, чтобы послать снаряд из точки T, чтобы перехватить объект, представленный точкой R.
Что известно:

  1. Расположение объекта R
  2. Направление движения объекта R
  3. Скорость, с которой движется объект R
  4. Расположение объекта Т
  5. Скорость, с которой будет двигаться объект T

Я ищу направление, в котором должен быть отправлен объект T, и, таким образом, нахожу место, в котором они столкнутся. Любой.

Например: Если...

  1. Расположение R было (1,5)
  2. R движется под углом 45 градусов (относительно d)
  3. R движется со скоростью 1 единица в секунду
  4. T расположен в (1,1)
  5. T также перемещается со скоростью 1 единица в секунду.


(источник: bja888.com)

L делает место столкновения в (3,3)


person Bryan Austin    schedule 27.01.2010    source источник
comment
Вы работаете в министерстве обороны, не так ли? Вы работаете над турелью с автоматическим наведением, не так ли? Ты убиваешь людей, не так ли? ;-)   -  person amphetamachine    schedule 27.01.2010
comment
Та же концепция. Но для игры.   -  person Bryan Austin    schedule 27.01.2010
comment
Должен ли T двигаться по прямой?   -  person kennytm    schedule 27.01.2010
comment
Да. Тем не менее, я рассматриваю возможность добавления опции для самонаводящегося снаряда. Мне также нужно иметь в виду, что R может быть быстрее, чем T.   -  person Bryan Austin    schedule 27.01.2010
comment
Когда вы доберетесь до поиска снарядов, вам нужно будет понять «кривые преследования».   -  person High Performance Mark    schedule 27.01.2010
comment
Я предполагаю, что вы ищете не просто любое столкновение; их бесконечное множество. В вашем заголовке написано кратчайший маршрут, но я не вижу ссылки на это в вопросе; вы хотите, чтобы T проехал кратчайшее расстояние, или вы хотите, чтобы R и T столкнулись как можно раньше?   -  person BlueRaja - Danny Pflughoeft    schedule 27.01.2010
comment
... или вы хотите, чтобы R и T были уволены одновременно? На все три вопроса есть разные ответы.   -  person BlueRaja - Danny Pflughoeft    schedule 27.01.2010


Ответы (2)


Существует бесконечное количество возможностей. Рассмотрим концентрическую серию окружностей из точек R и T, представляющую расстояние, которое каждая из них может пройти за увеличивающееся время. Место пересечения окружностей является точкой столкновения, а вектор между точкой столкновения и точкой Т находится там, где точка Т должна быть нацелена в этот конкретный момент. Если вы ищете кратчайший путь, вам нужно получить нормаль к пути R и активировать T в нужное время, рассчитав время, которое требуется T, чтобы пройти это расстояние, чтобы он достиг точки одновременно с Р.

person Arthur Kalliokoski    schedule 27.01.2010
comment
Скорость T фиксирована (допущение 5), поэтому существует не более двух возможностей. - person kennytm; 27.01.2010
comment
Охотник на уток, стреляющий в утку из дробовика, может стрелять в течение длительного промежутка времени, даже если это не влияет на скорость выстрела, верно? - person Arthur Kalliokoski; 27.01.2010
comment
Или, может быть, вы предполагаете, что R и T должны выстрелить одновременно? - person Arthur Kalliokoski; 27.01.2010

Предположим, что отсутствует трение воздуха, гравитация, внешние силы, ракеты со скоростями, близкими к скорости света, нарушение физических законов и т. д.

Предположим, что изначально R = (x, y) и T = (0, 0). (Измените систему координат, если T не в начале координат).

Предположим, что скорость T постоянна (cos , sin ), где неизвестна, но не зависит от времени . (Измените систему координат или единицу времени, если скорость не равна 1.)

Предположим, что скорость R постоянна (v, 0). (Измените систему координат, если скорость не по горизонтали.)

Предположим, что в момент времени t два объекта сталкиваются. Итак, у нас есть 2 уравнения и 2 неизвестных:

  • t потому что = x + vt
  • t sin = y

Так очевидно

  • t2 = (x + vt)2 + y< /em>2.

Решите это квадратное уравнение, чтобы получить t. Подставьте его в уравнение y, чтобы получить . КЭД.

person kennytm    schedule 27.01.2010
comment
Я вижу только скорость R. Где учитывается скорость T? - person Bryan Austin; 28.01.2010
comment
@Jacks: определено как 1. (Измените систему координат или единицу времени, если скорость не равна 1.) - person kennytm; 28.01.2010
comment
Вот что я получил для квадратичного... storage.bja888.com/find-time.png Проблема в том, что если скорость R равна 1 единице в секунду, она всегда будет пытаться делить на 0. Я сделал что-то не так? - person Bryan Austin; 29.01.2010
comment
@Jacks: Если v = 1, вы получите 0/0. Сделайте это особым случаем. - person kennytm; 29.01.2010