정의 찾는 :알고리즘 기준 각도를 "기준 각도"의
각도 구간 [0, R θ를 2π) 조건이 간격의 각도 θ 외측에 대응 만족
sin (θ) = sin (θ r) 및 cos (θ) = cos (θr)이다.
O를
REF ( O 360 ) = 0 O예를 들어 (간략화를 위해도에서 생각) ref (-40 o) = 320 oREF ( O 390 ) = 30 :
ref (540 기준 각을 찾기위한 예제 코드가
오 O) = 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의 배수로 계산할 수 있습니다. 따라서 정말로 float을 원하면 % 2 * pi 또는 fmod가됩니다. – sashkello