블로그는 나의 힘!
[ Programing ]/Algorithm2010. 2. 1. 08:32

 [ Shake ] Shake 구현
 
struct VECTOR
{
    float  fPosX, fPosY, fPosZ;
}
 
 // passedTime 분할 시간 ( 1초 / 60 프레임 )
 void Shake::Process( double passedTime )
 {
    double    shakeTimer;                // 누적 시간 ( 분할 된 시간 여기 누적 )
    double    shakeTime;                 // 지정 시간 ( 사용자가 원하는 시간 까지만 동작 하게 설정 )
    double    mPerTime  = 0.0f;        // 1 이면, 지정 시간 이라 종료
    float        shakeRadiusX;            // 지정 구간 크기 ( 사용자 지정 곡선 크기 설정 )
    float        shakeRadiusY;           // 지정 구간 크기 ( 사용자 지정 곡선 크기 설정 )
    float        mRadiusX  = 0.0f;       // 스코프 계산한 좌표 받아오는 값
    float        mRadiusY  = 0.0f;       // 스코프 계산한 좌표 받아오는 값
    VECTOR _sVector;                   // 흔들림 이동거리 좌표 저장값

    // 흔들림 좌표 받아오는 값 ( 초기화 )
    float rx   = 0.0f;       
    float ry   = 0.0f; 
 
    // 1 되면 종료
    if( ( this->shakeTimer >= this->shakeTime ) || (int) ( this->shakeTime *1000000.0f ) == 0 )   return;    
 
    shakeTimer += passedTime;  
    mPerTime = shakeTimer / shakeTime;

    // 스코프 계산
    mRadiusX = ( shakeRadiusX *cos( ( M_PI *mPerTime /2 ) ) );
    mRadiusY = ( shakeRadiusY *cos( ( M_PI *mPerTime /2 ) ) );
 
    // 흔들림 0.9826753f는 x축 최적의 흔들림 계산  ( 지정 )
    rx   = (float)( cos( 2 *M_PI * shakeSpeed * 0.9826753f  * mPerTime ) * mRadiusX );   
    // 흔들림 1.142541f는 y축 최적의 흔들림 계산  
    ry   = (float)( sin( 2 *M_PI * shakeSpeed * 1.1412541f  * mPerTime ) * mRadiusY );    

    // 흔들림 계산된 좌표 받아 온다.
    _sVector.fPosX = rx;     
    _sVector.fPosY = ry;
 
 }




To be continue... [Private]

Posted by Mister_Q