Home > src > BN_pol_rec > functions > tankPolicy.m

tankPolicy

PURPOSE ^

calculates policy of enemy tank

SYNOPSIS ^

function TP = tankPolicy(vi_pos, fi_pos, fi_vec)

DESCRIPTION ^

calculates policy of enemy tank
 returns proability vector TP = [attack, neural, bak] 
angle is in degrees

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 
0002  function TP = tankPolicy(vi_pos, fi_pos, fi_vec)
0003  %calculates policy of enemy tank
0004  % returns proability vector TP = [attack, neural, bak]
0005  %angle is in degrees
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

Generated on Wed 16-Mar-2005 09:17:47 by m2html © 2003