Как вычислить наличие препятствий на пути в 2d мире?
======================================================

 Есть массив 2d объектов (в основном прямоугольники и квадраты).  

  

Нужно вычислить есть ли на пути движения снаряда один из объектов.  

  

Сейчас я проверяю наличие объектов в треугольнике *ABC*, где медиана *AM* — и есть путь движения снаряда.  

За угол *А* я взял 30°.  

  

Проблема в том, что объекты двухмерные и имеют различную ширину и длину.  

Алгоритм ошибается в ситуации когда объект слишком широкий, но его центр выходит за площадь треугольника.  

  

Думал насчет равномерного нанесения на путь точек и проверке вхождения объекта в эти точки, но у меня нет опыта в этой обрасти.  

  

Как правильно решить данную задачу? 

 Смотря как они заданы. Возможно, наипростейший способ — посчитать, пересекается ли отрезок «начало полета снаряда — конец полета снаряда» с каждой из сторон 2d-объектов. Если пересекается, то кирдык. Надо только решить, что делать, если этот отрезок пересекает вершину препятствия.  

Нужно взять уравнение прямой отрезка полёта снаряда, и проверить, не лежит ли какая-то из сторон многоугольников, ограничивающих 2d-препятствия, в разных полуплоскостях от этой прямой. Если да, то есть пересечение.  

По-моему это перемножением векторов делается, но могу и ошибаться, надо погуглить. 

 Можно и collision detection, наверное. Сначала проверка столкновения с «конвертом», затем с самим объектом.