単純なタスクを解決しようとしていますが、エレガントな解決策が見つかりません。
私は基本的に2つの円形セクターの交差点を解決しています。各セクターは、(-pi, pi] の範囲内の 2 つの角度 (atan2 func から) によって指定されます. 各セレクターは最大角度 179.999 を占有します. したがって、2 つの角度ごとに円形セクターがどこにあるかがわかります.
戻り値は、以下に基づいて相互交差を表す必要があります。
value <1 if one angle is contained by second one (value represents how much space occupy percentually)
value >1 if first angle (the dotted one) is outside the other one, value represents how much of dotted angle is out of the other one
基本的なケースといくつかの例は以下の画像にあります
問題は、処理する必要があるケースが非常に多く、それを解決するエレガントな方法を探していることです。
2 つの角度を比較できるのは、2 つの角度が単位円 (cos>0) の右側にある場合のみです。右半分にいくつかの投影を使用してみました:
if(x not in <-pi/2, pi/2>)
{
c = getSign(x)*pi/2;
x = c - (x - c);
}
しかし、単位円の両方の半分の一部を占めるセクターには問題があります...
非常に多くのケースがあります...誰かがこれをエレガントに解決する方法を知っていますか? (私は c++ を使用しますが、任意のヒントまたは擬似コードで問題ありません)