# OpenArena Message Boards

## OpenArena Contributions => Development => Topic started by: Tungsten on March 14, 2018, 04:35:37 PM

 Title: What does the method "AngleVectors" actually do? Post by: Tungsten on March 14, 2018, 04:35:37 PM Hey there, new to the game, to the forums, to the code base, fascinated and enamored by all three, and writing a paper about vectors in OA and Q3A. This might be in the wrong section (engine, maybe?)So I see this method in q_math.c called "AngleVectors" and it appears in methods such as "AAS_WeaponJumpZVelocity." Could someone explain to me when you would use it, what it does, and what (if anything) it returns? I've been coding Python for 5 years, C# for 4, and Java for 3, but I've never dabbled in C even a little bit, so I'm pretty unfamiliar with how it works (Method-oriented, right?).I get the basic gist of it, but I'm really not sure what the second half of the function does.Here it is, for convenience sake:void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) {   float      angle;   static float      sr, sp, sy, cr, cp, cy;   // static to help MS compiler fp bugs   angle = angles[YAW] * (M_PI*2 / 360);   sy = sin(angle);   cy = cos(angle);   angle = angles[PITCH] * (M_PI*2 / 360);   sp = sin(angle);   cp = cos(angle);   angle = angles[ROLL] * (M_PI*2 / 360);   sr = sin(angle);   cr = cos(angle);   if (forward)   {      forward = cp*cy;      forward = cp*sy;      forward = -sp;   }   if (right)   {      right = (-1*sr*sp*cy+-1*cr*-sy);      right = (-1*sr*sp*sy+-1*cr*cy);      right = -1*sr*cp;   }   if (up)   {      up = (cr*sp*cy+-sr*-sy);      up = (cr*sp*sy+-sr*cy);      up = cr*cp;   }}Thanks! Title: Re: What does the method "AngleVectors" actually do? Post by: Tungsten on March 15, 2018, 03:35:45 PM I think I figured it out. It takes the vectors, and changes their angles based on an input vector with an angle. The `if` statements check if the supplied fields (forward, right, and up, respectively) are not null, and if they aren't, the code runs.