Flee는 Seek의 반대성격을 가진다.

즉 찾기의 반대인 달아나기이다.

찾기가 에이전트를 목표하는 위치로 향하게 하는 조종힘을 만들어 냈다면

반대로 달아나기는 목표에서 멀어지는 조종힘을 만들어 내면 될 것이다.

원리는 아래와 같다.


찾기 때와 유일한 차이점은 원하는 속도(T)를 찾기에서는 Goal - Pos를 통하여 구했다는점과 달아나기에서는 Pos - Goal을 통해 구했다는 점이다.

찾기때와 마찬가지로 점차적으로 회전하도록 하기 위해 조종힘(D)을 구한다. D = T - C

코드는 아래와 같다.


코드

1
2
3
4
5
6
7
8
9
Vector2D SteeringBehaviors::Flee(Vector2D GoalPos){
    // TargetVelocity = 원하는 속도    
    // 원하는 속도 구하는 공식 : T = (P - G) * speed
    // 순수 방향만 얻기 위해 정규화 후 speed를 곱한다.
    Vector2D TargetVelocity = Vec2DNormalize(GoalPos - m_pVehicle->Pos()) * m_pVehicle->MaxSpeed();
    // return value는 조종힘   
    // 조종힘 구하는 공식 : D = T - C
    return (TargetVelocity - m_pVehicle->Velocity());
}
cs


+ 후에 동영상을 올릴 수 있으면 추가하겠다.

'All > Algorithm' 카테고리의 다른 글

삼각함수를 이용한 원 그리기  (0) 2016.03.15
자동적에이전트 - Arrive  (0) 2016.02.22
피벗설정에 따른 퀵정렬의 속도  (0) 2016.01.18
자동적에이전트 - Seek  (0) 2016.01.17
QuickSort  (0) 2016.01.07

+ Recent posts