Я хочу определить, перекрываются ли два прямоугольника (не пересекаются). Я знаю, как это сделать для выровненных по оси прямоугольников, но в этом случае у меня есть один прямоугольник, который не всегда выровнен по оси (он же повернут по центру). В этом посте показано, как вычислить два пересекающихся прямоугольника, но он не классифицирует один прямоугольник внутри другого, как показано на этом рисунке , поскольку они перекрываются, а не пересекаются.
В моем случае один из прямоугольников выровнен по оси (черный ящик), а другой вращается (красный прямоугольник), что может упростить эту задачу.
Думаю, мне понадобится несколько случаев, чтобы определить, если ониперекрытия. Первый простой случай - проверить, есть ли какие-либо красные вершины внутри черного ящика. Затем я могу проверить, пересекаются ли какие-либо красные / черные края. Я не уверен, как я могу покрыть случай, показанный выше, и если есть более простой способ сделать это.
Дополнительные сведения: это для моего графического программного клипера (в этом случае не могу использовать аппаратное вырезание)где черный ящик - это мое окно / окно просмотра, красный - «спрайт», а все, что находится вне черного ящика, обрезается / не отображается. Я использую ортогональную / 2D проекцию. В конце у меня будет две функции, одна для обнаружения, если спрайт находится за пределами окна / области просмотра (о чем я спрашиваю в этом вопросе), а позже я сделаю функцию для обрезки спрайта внутри окна /окно просмотра с использованием алгоритма Сазерленда – Ходжмана.