Пересечение между дугой и прямоугольником - PullRequest
0 голосов
/ 28 июня 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 28 июня 2018

Для прямоугольников, находящихся полностью внутри дуги, вы можете проверить - принадлежит ли любая угловая точка (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 

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

...