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 <= 360Como 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.