본문 바로가기

참고 소스

각도를 0에서 360사이로 변경하는 방법

#include 
#include 
using namespace std;

int main(){
  const int maxLoop = 1000000000;
  {
    float fAngle = 90.f;
    const time_t startTime = time(0);
    for( int i = 0; i < maxLoop; ++i ) {
      volatile float clamppedAngle  = fmod( fAngle, 360.f );
    }
    const time_t endTime = time(0);
    cout << endTime - startTime << endl;
  }

  {
    float fAngle = 90.f;
    const time_t startTime = time(0);
    for( int i = 0; i < maxLoop; ++i ) {
      volatile float clamppedAngle = (( fAngle < 0.f ) ? - fAngle : fAngle);
      while( clamppedAngle >= 360.f  )
        clamppedAngle -= 360.f;
    }
    const time_t endTime = time(0);
    cout << endTime - startTime << endl;
  }

  {
    float fAngle = 90.f;
    const time_t startTime = time(0);
    for( int i = 0; i < maxLoop; ++i ) {
      volatile float clamppedAngle = (360.f/65536) *((int)(fAngle*(65536/360.f)) & 65536);
    }
    const time_t endTime = time(0);
    cout << endTime - startTime << endl;
  }

  {
    float fAngle = 90.f;
    const time_t startTime = time(0);
    for( int i = 0; i < maxLoop; ++i ) {
      volatile float clamppedAngle = fAngle - ((int) fAngle / 360) * 360.f;
    }
    const time_t endTime = time(0);
    cout << endTime - startTime << endl;
  }

}


<실행 결과>
26 


5

'참고 소스' 카테고리의 다른 글

[MFC] 실행파일 디렉토리  (0) 2012.12.27
반올림, 올림, 내림  (0) 2012.12.27