的角度θř在區間[0,2π)對應於角度θ這個區間之外,滿足條件
sin(θ)= sin(θ r)和cos(θ)= cos(θ r)。
例如(以度爲簡單起見思考):
REF(390 Õ)= 30 ö
REF(360 Õ)= 0 ö
ref(-40 o)= 320 o
ref(540 Õ)= 180 ö
查找參考角度的一個例子的代碼是:
double FindReferenceAngle(double Angle)
{
const double TWOPI = 2.0 * 3.1415926535897932384626433832795;
while(true)
{
if (Angle >= TWOPI)
{
Angle -= TWOPI;
}
else if (Angle < 0)
{
Angle += TWOPI;
}
else
{
return Angle;
}
}
}
然而,我不認爲這個代碼是最佳的。例如,如果用戶用非常大的角度值調用它(例如:FindReferenceAngle(1e10)
),則while循環將需要相當長的時間。
是否還有其他更高效的算法來查找參考角度,就像內置的標準C++庫例程一樣?
您正在以度數爲先,但您的代碼是弧度。如果你堅持學位,你只需要一個%360,如果弧度你可以計算pi的倍數,所以如果你真的想浮動,所以有%2 * pi或fmod。 – sashkello 2013-04-24 00:30:15