물리 프레임의 기본 - 선형 동역학

Dev.Write 2009. 12. 11. 06:47 Posted by zetz
  1. Linear dynamics

뉴턴의 고전 역학을 프로그래밍으로 구현하는데 있어서 가장 기본이 되는 것이

물체의 위치와 속도 가속도를 고려하는 것 일 것이다.

 

물리 프레임을 구현하는데 그 시작으로 선형 동역학부터 보자

(참고로 앞으로 "선형" or "Linear" 이란 단어를 자주 보게 될 것인데 어렵게 생각지 말자.

1차 함수 또는 직선을 생각하고, 반대로 "비선형", "non linear" 은 곡선을 생각하자 .)

 

 

우선 변수들 부터 알아보자

float            _Mass;            // 질량

D3DXVECTOR3        _Location;        // 위치

D3DXVECTOR3        _Velocity;        // 속도

D3DXVECTOR3        _Acceleration;    // 가속도

D3DXVECTOR3        _Force;        // 힘

D3DXMATRIX        _WorldMatrix;        // 최종 결과 메트릭스

 

우리는 최초 오브젝트의 특성으로 질량(M)을 주어 줄 것이고, 외부에서 전하는 힘(F) 에 따라

가속도와 속도 위치를 순서대로 업데이트 할 것이다.

    A = F / M

    V = V + A * dt;

    L = L + V * dt;

 

Update( float deltaTime )

{

    assert(_Mass != 0);

    _Acceleration = _Force / _Mass;

    _Velocity += _Acceleration * deltaTime;

    _Location += _Velocity * deltaTime;

    

// 계산 결과를 메트릭스로 나타내자. 여기서 Direct3D 함수를 사용하였다

D3DXMatrixTranslation( &_WorldMatrix, _Location.x, _Location.y, _Location.z );

}

 

참 쉽죠잉~~