Разрешение столкновений между двумя быстро движущимися кругами. Тот, который не реагирует на столкновения - PullRequest
0 голосов
/ 18 марта 2019

Хорошо, поэтому я углубился и понял, как делать столкновения между быстро движущимися кругами и базовыми формами на основе кривых / линий. Я еще не обнял голову, обнаруживая столкновения между двумя движущимися кругами. Я моделировал их как капсулы, и, хотя я мог легко находить их точки пересечения, я не уверен, как определить, где одна остановилась, а другая началась.

Кроме того, как только я узнаю эту информацию, я действительно не знаю, как определить их скорости и позиции.

Ситуация такова, что есть несколько сотен маленьких кругов, быстро движущихся по законам физики. Есть также гораздо более массивные круги, которые следуют за положением мыши / пальца / касания, когда он движется, и наследуют скорость пальцев и т. Д. Цель состоит в том, чтобы маленькие круги отбрасывались от больших кругов. Это сложно, потому что большие круги вообще не реагируют на столкновение, и большинство алгоритмов, которые я могу найти, требуют этого.

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

Есть хорошие идеи?

1 Ответ

1 голос
/ 18 марта 2019

Пусть x1, y1, vx1, vy1 будут x-позицией, y-позицией, x-скоростью и y-скоростью circle1.Точно так же у нас есть x2, y2, vx2, vy2 для circle2.

Поскольку один из кругов, скажем circle1, не реагирует на столкновение, это полезносмотреть на столкновение с точки зрения этого большого парня (также называемого системой отсчета).В этой системе отсчета circle2 имеет скорость x vx2 - vx1 и скорость y vy2 - vy1.Положение x и y circle2 аналогично x2 - x1 и y2 - y1.

В этой системе отсчета circle1 также не движется и может рассматриваться как статическая стена.

Затем вы можете решить эту проблему аналогично проблеме движущегося circle2, сталкивающегося со стеной с вектором нормали (x2-x1 , y2-y1) и скоростью (vx2-vx1 , vy2-vy1).

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

Как только вы получите конечную скорость circle2, просто не забудьтевернитесь к исходной перспективе, добавив vx1 к скорости x и vy1 к скорости y.

...