#include "utility.h" double vec_angle(vector1,vector2) /*============================================================================*/ /* PURPOSE: CALCULATE THE ANGLE BEWTEEN TWO VECTORS. IF EITHER VECTOR HAS /* ZERO LENGTH, THE RETURNED ANGLE IS -1. /* INPUTS: /* VECTOR1 (X,Y,Z) TRIPLET. /* VECTOR2 (X,Y,Z) TRIPLET. /* OUTPUTS: /* FUNCTION VALUE ANGLE IN DEGREES (0-180) BETWEEN VECTOR1 AND VECTOR2. /* WRITTEN: M.V.GRIESHABER /* LAST MODIFICATION: 11 JUNE 1991 MVG */ double vector1[3]; double vector2[3]; { double length1; double length2; double cos_theta; /* COMPUTE THE LENGTH OF EACH VECTOR. */ length1=vec_length(vector1); length2=vec_length(vector2); if (length1==0.0 || length2==0.0) return(-1.0); /* COMPUTE THE COSINE OF THE INCLUDED ANGLE. */ cos_theta=vec_dotprod(vector1,vector2) / (length1*length2); /* GUARD AGAINST THRESHHOLD INACCURACY. */ if (cos_theta > 1.0) cos_theta=1.0; else if (cos_theta < -1.0) cos_theta= -1.0; return(acos(cos_theta)*DEGREES_PER_RADIAN); }