Author: bugman Date: Mon Nov 17 17:16:23 2014 New Revision: 26602 URL: http://svn.gna.org/viewcvs/relax?rev=26602&view=rev Log: Implemented the lib.geometry.vectors.vector_angle_acos() function. This is used to calculate the inter-vector angle using the arccos of the dot product formula. The function has been introduced into the relax library as the calculation is repeated throughout relax. Modified: trunk/lib/geometry/vectors.py Modified: trunk/lib/geometry/vectors.py URL: http://svn.gna.org/viewcvs/relax/trunk/lib/geometry/vectors.py?rev=26602&r1=26601&r2=26602&view=diff ============================================================================== --- trunk/lib/geometry/vectors.py (original) +++ trunk/lib/geometry/vectors.py Mon Nov 17 17:16:23 2014 @@ -103,13 +103,32 @@ return angle +def vector_angle_acos(vector1, vector2): + """Calculate the angle between two N-dimensional vectors using the acos formula. + + The formula is:: + + angle = acos(dot(a / norm(a), b / norm(b))). + + + @param vector1: The first vector. + @type vector1: numpy rank-1 array + @param vector2: The second vector. + @type vector2: numpy rank-1 array + @return: The angle between 0 and pi. + @rtype: float + """ + + # Calculate and return the angle. + return acos(dot(vector1 / norm(vector1), vector2 / norm(vector2))) + + def vector_angle_atan2(vector1, vector2): """Calculate the angle between two N-dimensional vectors using the atan2 formula. The formula is:: angle = atan2(norm(cross(a, b)), dot(a, b)). - This is more numerically stable for angles close to 0 or pi than the acos() formula.