Пересечение между дугой и прямоугольником

Скажите, что есть дуга и прямоугольник.

Дуга имеет положение, радиус, минимальный и максимальный углы и ширину самой дуги. Прямоугольник имеет положение, ширину и высоту, а также вращение.

Как определить, пересекаются ли дуга и прямоугольник?

Предоставлена ​​визуальная помощь, которая может повысить четкость. Зеленые прямоугольники - это те, которые считаются пересекающимися, тогда как красные прямоугольники не пересекаются.

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

1 ответ

Для прямоугольников, находящихся полностью внутри дуги, вы можете проверить - есть ли какая-либо угловая точка (x, y) принадлежит толстой дуге. Для центра дуги (cx, cy)внутренний и внешний радиусы r а также R и углы a0,a1:

dist = length(x - cx, y - cy)
if dist lies in range r..R:
   angle = atan2(y-cy, x-cx)
   if angle in range a0..a1:
       rectangle is inside 

Еще один нестандартный случай: чтобы определить, находится ли дуга полностью внутри большого прямоугольника - просто проверьте, находится ли какая-либо точка дуги в этом прямоугольнике.

Другие вопросы по тегам