source: sasmodels/explore/angles.py @ bf09f55

core_shell_microgelsmagnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since bf09f55 was bf09f55, checked in by Paul Kienzle <pkienzle@…>, 7 years ago

updated angle calculator for jitter

  • Property mode set to 100644
File size: 1.8 KB
Line 
1from __future__ import print_function
2
3import sympy as sp
4sp.init_printing()
5dphi, dpsi, dtheta = sp.var("phi_d psi_d theta_d")
6phi, psi, theta = sp.var("phi psi theta")
7x, y, z = sp.var("x y z")
8qx, qy, qz = sp.var("qx qy qz")
9qa, qb, qc = sp.var("qa qb qc")
10
11def Rx(a):
12    return sp.Matrix([[1, 0, 0], [0, sp.cos(a), sp.sin(a)], [0, -sp.sin(a), sp.cos(a)]])
13def Ry(a):
14    return sp.Matrix([[sp.cos(a), 0, sp.sin(a)], [0, 1, 0], [-sp.sin(a), 0, sp.cos(a)]])
15def Rz(a):
16    return sp.Matrix([[sp.cos(a), sp.sin(a), 0], [-sp.sin(a), sp.cos(a), 0], [0, 0, 1]])
17
18print("==== asymmetric ====")
19q_xy = sp.Matrix([[qx], [qy], [0]])
20q_abc = sp.Matrix([[qa], [qb], [qc]])
21p_xyz = sp.Matrix([[x], [y], [z]])
22jitter = Rx(dphi)*Ry(dtheta)*Rz(dpsi)
23view = Rz(phi)*Ry(theta)*Rz(psi)
24view_inv = Rz(-psi)*Ry(-theta)*Rz(-phi)
25print(">> jitter rotation")
26for row in jitter*p_xyz: sp.pprint(row)
27#print("\n>> jitter plus view")
28#for row in view*jitter*p_xyz: sp.pprint(row)
29print("\n>> view reverse")
30for row in view_inv*q_xy: sp.pprint(row)
31print("\n>> jitter reverse")
32jitter_inv = Rz(-psi)*Ry(-theta)*Rx(-phi)
33for row in jitter_inv*q_abc: sp.pprint(row)
34print("\n>> jitter view reverse")
35jitter_inv = Rz(-dpsi)*Ry(-dtheta)*Rx(-dphi)
36for row in jitter_inv*view_inv*q_xy: sp.pprint(row)
37
38print("\n\n==== symmetric ====")
39q_x = sp.Matrix([[qx], [0], [0]])
40q_ac = sp.Matrix([[qa], [0], [qc]])
41p_xyz = sp.Matrix([[x], [y], [z]])
42jitter = Rx(dphi)*Ry(dtheta)
43view = Rz(phi)*Ry(theta)
44jitter_inv = Ry(-dtheta)*Rx(-dphi)
45view_inv = Ry(-theta)*Rz(-phi)
46print(">> jitter rotation")
47for row in jitter*p_xyz: sp.pprint(row)
48#print("\n>> jitter plus view")
49#for row in view*jitter*p_xyz: sp.pprint(row)
50print("\n>> view reverse")
51for row in view_inv*q_x: sp.pprint(row)
52print("\n>> jitter reverse")
53for row in jitter_inv*q_ac: sp.pprint(row)
Note: See TracBrowser for help on using the repository browser.