void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, vec_t degrees ) { vec_t sind, cosd, expr; vec3_t dxp; degrees = DEG2RAD( degrees ); sind = sin( degrees ); cosd = cos( degrees ); expr = ( 1 - cosd ) * DotProduct( dir, point ); CrossProduct( dir, point, dxp ); dst[0] = expr*dir[0] + cosd*point[0] + sind*dxp[0]; dst[1] = expr*dir[1] + cosd*point[1] + sind*dxp[1]; dst[2] = expr*dir[2] + cosd*point[2] + sind*dxp[2]; }