Пересечение между дугой и прямоугольником
Скажите, что есть дуга и прямоугольник.
Дуга имеет положение, радиус, минимальный и максимальный углы и ширину самой дуги. Прямоугольник имеет положение, ширину и высоту, а также вращение.
Как определить, пересекаются ли дуга и прямоугольник?
Предоставлена визуальная помощь, которая может повысить четкость. Зеленые прямоугольники - это те, которые считаются пересекающимися, тогда как красные прямоугольники не пересекаются.
Я определил, что обычно проверяют пересечения на каждом отрезке линии прямоугольника по отдельности, но я пока не уверен, как можно объяснить, что прямоугольник находится внутри дуги, но не достаточно близко, чтобы пересекать его.
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
Еще один нестандартный случай: чтобы определить, находится ли дуга полностью внутри большого прямоугольника - просто проверьте, находится ли какая-либо точка дуги в этом прямоугольнике.