Кто-нибудь знает, как определить, пересекаются ли два сектора одного круга?
Допустим, у меня есть сектор A, выраженный начальными и конечными углами A1 и A2, и сектор B, выраженный начальным угломB1 и конечный угол B2.Все углы колеблются от 0, 2 * Пи радианы (или 0, 360 градусов).
Как определить, пересекается ли угол A с углом B?
Я пробовал вариант задачи с пересечением двух прямоугольников , например:
if(a1 <= b2 && a2 >= b1) {
// the sectors intersect
} else {
// the sectores doesn't intersect
}
Этот метод подходит, если ни один сектор не пересекает точку 0 градусов.Но если какой-либо сектор пересекает его, расчет становится неправильным.
Основная проблема заключается в создании направленного (на основе заголовка) приложения дополненной реальности.Сектор A является объектом, тогда как сектор B является окном просмотра.Углы получаются следующим образом:
A0 = bearing of the object
A1 = A0 - objectWidthInRadians
A2 = A0 + objectWidthInRadians
B0 = heading of the user (device)
B1 = B0 - viewportWidthInRadians
B2 = B0 + viewportWidthInRadians
Заранее спасибо.