void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up ) { float angle; static float sp, sy, cp, cy, sr, cr; // static to help MS compiler fp bugs angle = DEG2RAD( angles[PITCH] ); sp = sin( angle ); cp = cos( angle ); angle = DEG2RAD( angles[YAW] ); sy = sin( angle ); cy = cos( angle ); if( forward ) { forward[0] = cp*cy; forward[1] = cp*sy; forward[2] = -sp; } if( right || up ) { angle = DEG2RAD( angles[ROLL] ); sr = sin( angle ); cr = cos( angle ); if( right ) { right[0] = -1*sr*sp*cy+-1*cr*-sy; right[1] = -1*sr*sp*sy+-1*cr*cy; right[2] = -1*sr*cp; } if( up ) { up[0] = cr*sp*cy+-sr*-sy; up[1] = cr*sp*sy+-sr*cy; up[2] = cr*cp; } } }