3 // angles of the player's model (as opposed to their view which uses `.vector v_angle;`) in degrees
4 // x is pitch: positive means up (unlike .v_angle), usually is 0
5 // y is yaw: between -180 and 180, increases when turning left
6 // z is roll: positive means tilted clockwise, usually is 0
10 * Return a angle within +/- 360.
13 float anglemods(float v)
15 v = v - 360 * floor(v / 360);
26 * Return the short angle
29 float shortangle_f(float ang1, float ang2)
46 vector shortangle_v(vector ang1, vector ang2)
50 vtmp_x = shortangle_f(ang1_x,ang2_x);
51 vtmp_y = shortangle_f(ang1_y,ang2_y);
52 vtmp_z = shortangle_f(ang1_z,ang2_z);
58 vector shortangle_vxy(vector ang1, vector ang2)
60 vector vtmp = '0 0 0';
62 vtmp_x = shortangle_f(ang1_x,ang2_x);
63 vtmp_y = shortangle_f(ang1_y,ang2_y);
69 * Return the angle offset between angle ang and angle of the vector from->to
73 vector angleofs3(vector from, vector ang, vector to)
77 v_res = normalize(to - from);
78 v_res = vectoangles(v_res);
81 if (v_res_x < 0) v_res_x += 360;
82 if (v_res_x > 180) v_res_x -= 360;
84 if (v_res_y < 0) v_res_y += 360;
85 if (v_res_y > 180) v_res_y -= 360;
90 #define angleofs(from, to) angleofs3(from.origin, from.angles, to.origin)