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