Issue
I have write down a code to calculate angle between three points using their 3D coordinates.
import numpy as np
a = np.array([32.49, -39.96,-3.86])
b = np.array([31.39, -39.28, -4.66])
c = np.array([31.14, -38.09,-4.49])
f = a-b # normalization of vectors
e = b-c # normalization of vectors
angle = dot(f, e) # calculates dot product
print degrees(cos(angle)) # calculated angle in radians to degree
output of the code:
degree 33.4118214995
but when i used one of the software to calculate the same it gives output bit different 120 degree. please help
reference i have used to write the program:
(How to calculate bond angle in protein db file?)
Solution
Your original code is pretty close. Adomas.m's answer is not very idiomatic numpy:
import numpy as np
a = np.array([32.49, -39.96,-3.86])
b = np.array([31.39, -39.28, -4.66])
c = np.array([31.14, -38.09,-4.49])
ba = a - b
bc = c - b
cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc))
angle = np.arccos(cosine_angle)
print np.degrees(angle)
Answered By - Eric
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.