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

Първоначално две недокосващи се сфери с радиуси 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 и a2k


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 Again: Не съм сигурен дали Адриен наистина е заявил, че сблъсъкът се случва в най-близките точки - за мен прозвуча така, но може би съм го разбрал погрешно - person Marco13; 16.06.2014
comment
Разбира се, прав си, не съм мислил за тази възможност :/ - person Adrien; 16.06.2014