同じ円の 2 つの円セグメントが与えられた場合: A=[a1, a2] と B=[b1, b2] の場合:
- -inf と +inf の間の a1、a2、b1、b2 の値 (度単位)
- a1 <= a2; b1 <= b2
- a2-a1<=360; b2-b1<=360
これらの 2 つの円セグメントが重なっているかどうかを確認するにはどうすればよいですか? (つまり、少なくとも 1 点で交差または接触している場合)
例:
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° を横切る場合に 2 つに分割するという解決策の基本的なアイデアを持っていますが、それがすべてのケースをカバーするかどうかはわかりません。また、エレガントな式があるかどうか疑問に思っていました。