verifique se dois segmentos no mesmo círculo se sobrepõem / cruzam

Dados dois segmentos de círculo do mesmo círculo: A = [a1, a2] e B = [b1, b2], com:

valores a1, a2, b1, b2 em graus entre -inf e + infa1 <= a2; b1 <= b2a2-a1 <= 360; b2-b1 <= 360

Como posso descobrir se esses dois segmentos de círculo se sobrepõem? (i.E. se eles se cruzam ou tocam em pelo menos um ponto)

Exemplos:

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 

Isso parece um problema aparentemente simples, mas não consigo envolver minha cabeça. Eu atualmente tenho uma idéia básica para uma solução que envolve dividir cada segmento em dois se ele cruza 0 °, mas não tenho certeza se isso abrange todos os casos, e eu queria saber se existe uma fórmula elegante.

questionAnswers(3)

yourAnswerToTheQuestion