Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def dihedros(A_1,A_2,A_3,A_4,qt_1):
- xba = A_2.x - A_1.x ; xca = A_3.x - A_1.x
- yba = A_2.y - A_1.y ; yca = A_3.y - A_1.y
- zba = A_2.z - A_1.z ; zca = A_3.z - A_1.z
- xcb = A_3.x - A_2.x ; xdb = A_4.x - A_2.x
- ycb = A_3.y - A_2.y ; ydb = A_4.y - A_2.y
- zcb = A_3.z - A_2.z ; zdb = A_4.z - A_2.z
- nx1=(yba*zca)-(yca*zba)
- ny1=(xca*zba)-(xba*zca)
- nz1=(xba*yca)-(xca*yba)
- nx2=(ycb*zdb)-(ydb*zcb)
- ny2=(xdb*zcb)-(xcb*zdb)
- nz2=(xcb*ydb)-(xdb*ycb)
- pdot = (nx1*nx2)+(ny1*ny2)+(nz1*nz2)
- w1 = sqrt((nx1*nx1)+(ny1*ny1)+(nz1*nz1))
- w2 = sqrt((nx2*nx2)+(ny2*ny2)+(nz2*nz2))
- signo = (nx2*xba)+(ny2*yba)+(nz2*zba)
- u = pdot/(w1*w2)
- if abs(u) >= 1.0:
- u=(1.-1.e-20)*(u/abs(u))
- if signo >= 0.:
- dieh = acos(u)
- qa = dieh - 2*pi
- if signo < 0.:
- dieh = -acos(u)
- qa = dieh + 2*pi
- wa = dieh - qt_1; wb = qa - qt_1
- if abs(wa) <= abs(wb):
- ang_dih = dieh
- else:
- ang_dih = qa
- return ang_dih
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement