проверить, перекрываются ли два отрезка на одном круге
Даны два отрезка круга одного круга: A = [a1, a2] и B = [b1, b2], с:
a1, a2, b1, b2 values in degree between -inf and +inf a1 <= a2 ; b1 <= b2 a2-a1<=360; b2-b1<=360Как я могу узнать, перекрываются ли эти два сегмента круга? (т.е. если они пересекаются или касаются хотя бы одной точки)
Примеры:
A=[ -45°, 45°]; B=[ 10°, 20°] ==> overlap
A=[ -45°, 45°]; B=[ 90°, 180°] ==> no overlap
A=[ -45°, 45°]; B=[ 180°, 360°] ==> overlap
A=[ -405°, -315°]; B=[ 180°, 360°] ==> overlap
A=[-3600°, -3601°]; B=[ 3601°, 3602°] ==> overlap (touching counts as overlap)
A=[ 3600°, 3601°]; B=[-3601°,-3602°] ==> overlap (touching counts as overlap)
A=[ -1°, 1°]; B=[ 3602°, 3603°] ==> no overlap
Это похоже на обманчиво простую проблему, но я не могу обернуться вокруг нее. В настоящее время у меня есть основная идея для решения, которое включает в себя разбиение каждого сегмента на два, если он пересекает 0 & # xB0 ;, но я не уверен, охватывает ли это все случаи, и мне было интересно, существует ли элегантная формула.