У меня есть два ограничивающих прямоугольника, выровненных по объектам (т.е. не по оси, они вращаются вместе с объектом). Я хотел бы знать, перекрываются ли два выравнивания объекта. ( Правка: примечание - я использую тест ограничивающего прямоугольника с осями, чтобы быстро отбросить удаленные объекты, поэтому не имеет значения, если подпрограмма с квадратом немного медленнее. )
Мои ящики хранятся в виде четырех точек x, y. Я искал ответы, но не могу понять имена переменных и алгоритмы в примерах, чтобы применить их к моему конкретному случаю.
Может ли кто-нибудь помочь показать мне, как это будет сделано, ясным и простым способом? Спасибо. (Конкретный язык не важен, псевдокод в стиле C в порядке.)
источник
Более простой способ, вероятно, состоит в том, чтобы проверить каждую вершину блока B на каждой стороне блока A (вычислить расстояние со знаком). Таким образом, вы можете классифицировать каждую вершину как «перед» или «позади» сегмента.
Если все вершины B классифицируются как «перед» одного из сегментов A, B и A не перекрываются; в противном случае они делают.
Это несколько усложняется, поэтому вы можете получить некоторое повышение производительности, выполнив сначала проверку окружности, используя ограничивающие круги квадратов (тривиально для вычисления)
источник