Esempio n. 1
0
 def angle_between_vectors(v1, v2):
     """
     Calculates the angle between <v1> and <v2>. The result is in the range [0, pi]
     On degenerate input (any of the vectors of norm 0) will raise ValueError.
     """
     v1 = Vector(v1, copy=False)
     v2 = Vector(v2, copy=False)
     n1 = v1.norm()
     n2 = v2.norm()
     if n1 == 0 or n2 == 0:
         raise ValueError("Can't calculate angle between zero length vectors !")
     cos_a = v1.dot(v2) / (n1 * n2)
     cos_a = max(-1.0, min(1.0, cos_a))
     return math.acos(cos_a)