0001
0002 function [DP] = getPlatoonDirection(own_force_pos, enemy_pos, enemy_vec)
0003
0004
0005
0006
0007
0008
0009
0010
0011 vi_fiVec = [own_force_pos(1)- enemy_pos(1) own_force_pos(2)- enemy_pos(2)];
0012
0013 [angle, angle_half] = findAngle(vi_fiVec, enemy_vec);
0014 p_attack = 0; p_neutral = 0; p_bak = 0;
0015
0016 if (((angle >= 0)&&(angle <= 30))||(angle > 330))
0017 p_attack = 1;
0018 end
0019
0020 if (((angle > 30)&&(angle <= 60))||((angle >300)&&(angle <= 330)))
0021 k = -1/30;
0022 if (angle > 300)
0023 p_attack = - k*(angle- 300);
0024 else
0025 p_attack = 1 + k*(angle- 30);
0026 end
0027 p_neutral = 1 - p_attack;
0028 end
0029
0030 if (((angle > 60)&&(angle <= 120))||((angle >240)&&(angle <= 300)))
0031 p_neutral = 1;
0032 end
0033
0034 if (((angle > 120)&&(angle <= 150))||((angle >210)&&(angle <= 240)))
0035 k = -1/30;
0036 if (angle >210)
0037 p_neutral= - k*(angle - 210);
0038 else
0039 p_neutral= 1 + k*(angle - 120);
0040 end
0041 p_bak = 1- p_neutral;
0042 end
0043
0044 if (angle > 150)&&(angle <= 210)
0045 p_bak = 1;
0046 end
0047
0048 DP = [p_attack p_neutral p_bak];
0049
0050