Круг А движется вправо вдоль оси х.Круг B движется вверх вдоль оси y.Я хотел бы знать, собираются ли они столкнуться.(не тогда, просто если.)
Радиусы одинаковы, разные постоянные скорости.
Этот ответ , кажется, решает проблему, и мой вопрос должен был быть лучше продолженк этому.(Извинения за то, что у меня недостаточно репутации, чтобы комментировать.)
Я не могу решить для t (времени) предоставленное уравнение (круги будут сталкиваться, если t существует):
(Oax + t*Dax - Obx - t*Dbx)^2 + (Oay + t*Day - Oby - t*Dby)^2 = (ra + rb)^2
Здесь снова в понятных терминах:
(CircleA.initialPosition.x + t*CircleA.velocity.x -
CircleB.initialPosition.x - t*CircleB.velocity.x)^2
+
(CircleA.initialPosition.y + t*CircleA.velocity.y -
CircleB.initialPosition.y - t*CircleB.velocity.y)^2
=
(CircleA.radius + CircleB.radius)^2
Что в моем случае немного проще, поскольку круги движутся вдоль осей (скорость равна 0 на одной оси), а радиусы одинаковы:
(CircleA.initialPosition.x + t*CircleA.velocity.x -
CircleB.initialPosition.x)^2
+
(CircleA.initialPosition.y - CircleB.initialPosition.y -
t*CircleB.velocity.y)^2
=
(2*radius)^2
Тем не менее, я не могу решить эту проблему, и предоставленная ссылка на auto-solver также не помогает моей толстой голове.
(В частности, я не могуget
sqrt(-(D4 - D3)^2)
Выражение внутри sqrt () всегда отрицательно, поэтому оно всегда терпит неудачу. Чего мне не хватает?)
За исключением автоматического решения, я надеюсь, что кто-то может показать путь крешить уравнение для t (и, возможно, модератор может объединить вопросы, извините за беспокойство).
Или любой другой способ решения проблемы, возможно, с использованием встроенной функции box2d, о которой я не знаю.