Обнаружение столкновения между двумя ускоряющимися сферами без начальной скорости?

Изначально в пространстве покоятся две не соприкасающиеся сферы радиусов R1 и R2.
Затем им обоим придается ускорение a1 и a2 соответственно в момент времени = 0.
Определите, вступят ли они когда-либо в контакт. Их начальные позиции представлены как (x1,y1,z1)
и (x2,y2,z2) соответственно. Ускорения имеют соответствующие компоненты в 3D. Они представлены как (a1i,a1j,a1k) и (a2i,a2j,a2k) соответственно.

Каково математическое условие успешного столкновения шаров? Или каким должно быть мышление программирования, чтобы решить такую ​​проблему.

Примечание. Было бы здорово, если бы вы могли дать мне удовлетворяющее условие с точки зрения переменных, упомянутых в вопросе, то есть r1, r2, x1, y1, z1, x2, y2, z2, a1i, a2i, a1j, a2j, a1k и а2к


person DOSHI    schedule 16.06.2014    source источник
comment
Я думаю, вы можете просто использовать, если расстояние между (x1, y1, z1) и (x2, y2, z2) меньше суммы двух радиусов (r1 + r2), тогда они сталкиваются).   -  person EpicPandaForce    schedule 16.06.2014
comment
(x1,y1,z1) и (x2,y2,z2) — начальные положения, а не мгновенное положение сфер. Также сферы изначально не соприкасаются, как указано в задаче.   -  person DOSHI    schedule 16.06.2014
comment
Хм, так что все, что у вас есть, это ускорение и начальные координаты, и вам нужно сказать, существует ли какое-либо значение 't', при котором условие пересечения будет истинным. Это действительно интересный вопрос, я лично не уверен, как решить эту проблему. Проголосовал за вызов этого.   -  person EpicPandaForce    schedule 16.06.2014


Ответы (3)


Используя заданные имена переменных:

  • Положение точки 1 в момент времени 0 равно (x1,y1,z1)
  • Положение точки 2 в момент времени 0 равно (x2,y2,z2)
  • Положение точки 1 в момент времени t равно p1(t) = (x1,y1,z1) + 0.5 * (a1i,a1j,a1k) * t * t
  • Положение точки 2 в момент времени t равно p2(t) = (x2,y2,z2) + 0.5 * (a2i,a2j,a2k) * t * t
  • Условие пересечения в момент времени t | p1(t) - p2(t) | < r1+r2

| ... | обозначает евклидово расстояние, то есть | (x,y,z) | = sqrt(x*x+y*y+z*z)

Это дает условие:

sqrt((x1+0.5*a1i*t*t - x2+0.5*a2i*t*t)^2+
     (y1+0.5*a1j*t*t - y2+0.5*a2j*t*t)^2+
     (z1+0.5*a1k*t*t - z2+0.5*a2k*t*t)^2) < r1 + r2

Когда есть t, где это условие истинно, тогда сферы касаются/пересекаются в этот момент времени.

Я попытался передать это в WolframAlpha и найти t, но безуспешно. В любом случае реализовать чисто аналитическое решение будет непросто.

person Marco13    schedule 16.06.2014
comment
Я поместил свой простой пример ((0,0,1),(0,0,2),(0,0,1.2),(0,0,1.1)) с (r1+r2)=0,1 в WolframAlpha как (1+0.5*1.2*x*x) - (2+0.5*1.1*x*x) - 0.1 = 0 и получил ответ 4.69042, который кажется разумным. Что делает WolframAlpha для решения этой проблемы? - person Dane; 16.06.2014

Большое спасибо за помощь. К счастью, я нашел решение. Я делюсь этим здесь для всех тех, кто с энтузиазмом относится к этой проблеме.

person DOSHI    schedule 16.06.2014
comment
Это выглядит как отличный ответ. Есть ли у вас дополнительные ссылки или информация об источнике вашего решения? - person Dane; 16.06.2014

Это сферы, поэтому они перекрываются, если расстояние между их центрами меньше суммы их радиусов. Если ускорение заставляет сферы следовать по прямой линии, это просто вопрос вычисления расстояния между этими траекториями, которое в 3D является смешанным произведением их векторов направления и вектора, который объединяет обе их точки приложения (скажем, начальное положение ваших сфер), деленное на модуль векторного произведения их векторов направления. После этого вы должны увидеть, когда первая сфера окажется в точке, расстояние до которой до другой траектории минимально. Когда это сделано, вы просто вычисляете положение второй сферы в этот момент и смотрите, перекрываются ли они.

person Adrien    schedule 16.06.2014
comment
По общему признанию, это трудно представить визуально, и я не уверен, понял ли я ваше описание, но я думаю, что точка, где сферы (потенциально) сталкиваются, не обязательно точка, где их траектории пересекаются. наименьшее расстояние. - person Marco13; 16.06.2014
comment
@ Marco13 прав в своем возражении. В качестве примера представьте начальные положения 0,0,1 и 0,0,2 с соответствующими ускорениями 0,0,1,2 и 0,0,1,1. Первая сфера в конце концов пройдет через вторую, но на двух линиях траектории нет ближайшей точки. Вы также можете представить себе небольшое смещение, так что когда две линии пересекаются, это происходит не в точке пересечения, а в какой-то точке позже, где сталкиваются сферы. - person Dane; 16.06.2014
comment
@Dane Опять же: я не уверен, действительно ли Адриан заявлял, что столкновение происходит в ближайших точках - для меня это звучало так, но, может быть, я неправильно понял это - person Marco13; 16.06.2014
comment
Конечно, вы правы, я не думал о такой возможности :/ - person Adrien; 16.06.2014