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 |