обнаружение столкновения прямоугольника на пути - PullRequest
2 голосов
/ 30 июня 2011

У меня есть два прямоугольника, один движется, а другой неподвижен. У меня есть размер обоих прямоугольников и текущие координаты движущегося прямоугольника и координаты, куда он хочет пойти. Он будет двигаться по прямой линии. С этой информацией, какой самый эффективный способ найти, столкнутся ли эти две коробки на пути. Более эффективно делать это или перемещать рамку на небольшое количество каждый кадр и каждый раз обнаруживать столкновения?

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Поскольку один из прямоугольников является стационарным, один из способов сделать это - создать многоугольник пути, по которому движется движущийся прямоугольник, что можно сделать, используя только его начальные и конечные позиции:

(initial position)
+--------+
|\       |\
| \      | \
+--\-----+  \
 \  \     \  \
  \  +-----\--+
   \ |      \ |
    \|       \|
     +--------+
      (final position)

Путь многоугольника:

+--------+
|         \
|          \
+           \
 \           \
  \           +
   \          |
    \         |
     +--------+

Затем используйте обычный алгоритм обнаружения столкновений полигонов между неподвижным прямоугольником и многоугольником траектории.

0 голосов
/ 30 июня 2011

Если он движется с постоянной скоростью, самый эффективный способ - это рассчитать, когда они будут сталкиваться (время = скорость / расстояние) и будут ли они сталкиваться (получить линейное уравнение движения и посмотреть, пройдет ли оно через стационарныйпрямоугольник).Если он движется с переменной скоростью, выполняйте эти вычисления при каждом изменении скорости.Они оба гораздо эффективнее, чем сравнение для каждого кадра.

...