참고 소스

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

부산밴댕이 2012. 12. 26. 19:22

#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