ある角度が他の2つの角度の中にあるかどうかを教えてくれる関数を書こうとしています。「ある角度が他の2つの角度内にある場合」と言うとき、たとえば、2つの角度0と90がある場合、45はそれらの角度の間にありますが、-20(または99)はそうではありません。
私の問題:私の関数は、2つの角度が2つの角度の中にあるべきときにそれを検出していないようです。私の関数が負の角度でも機能するかどうかわかりませんか?
関数を正しく機能させるには、何を変更する必要がありますか?
bool is_angle_between(int target, int angle1, int angle2)
{
// Post: Return true if target lies between the 2 angles
int iTarget = (360 + (target % 360)) % 360;
int iAngle1 = (3600000 + angle1) % 360;
int iAngle2 = (3600000 + angle2) % 360;
if (iAngle1 < iAngle2)
if (iAngle1 <= iTarget && iTarget <= iAngle2)
return true;
else if (iAngle1 <= iTarget || iTarget <= iAngle2)
return true;
return false;
}