Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. def dihedros(A_1,A_2,A_3,A_4,qt_1):
  2.     xba = A_2.x - A_1.x ;  xca = A_3.x - A_1.x
  3.     yba = A_2.y - A_1.y ;  yca = A_3.y - A_1.y
  4.     zba = A_2.z - A_1.z ;  zca = A_3.z - A_1.z
  5.     xcb = A_3.x - A_2.x ;  xdb = A_4.x - A_2.x
  6.     ycb = A_3.y - A_2.y ;  ydb = A_4.y - A_2.y
  7.     zcb = A_3.z - A_2.z ;  zdb = A_4.z - A_2.z
  8.     nx1=(yba*zca)-(yca*zba)
  9.     ny1=(xca*zba)-(xba*zca)
  10.     nz1=(xba*yca)-(xca*yba)
  11.     nx2=(ycb*zdb)-(ydb*zcb)
  12.     ny2=(xdb*zcb)-(xcb*zdb)
  13.     nz2=(xcb*ydb)-(xdb*ycb)
  14.     pdot = (nx1*nx2)+(ny1*ny2)+(nz1*nz2)
  15.     w1 = sqrt((nx1*nx1)+(ny1*ny1)+(nz1*nz1))
  16.     w2 = sqrt((nx2*nx2)+(ny2*ny2)+(nz2*nz2))
  17.     signo = (nx2*xba)+(ny2*yba)+(nz2*zba)
  18.     u = pdot/(w1*w2)
  19.     if abs(u) >= 1.0:
  20.         u=(1.-1.e-20)*(u/abs(u))
  21.     if signo >= 0.:
  22.         dieh = acos(u)
  23.         qa = dieh - 2*pi
  24.     if signo < 0.:
  25.         dieh = -acos(u)
  26.         qa = dieh + 2*pi
  27.  
  28.     wa = dieh - qt_1; wb = qa - qt_1
  29.     if abs(wa) <= abs(wb):
  30.         ang_dih = dieh
  31.     else:
  32.         ang_dih = qa
  33.  
  34.     return ang_dih
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement