8 if sys.stdout.encoding is None:
9 sys.stdout = codecs.open("/dev/stdout", "w", 'utf-8')
11 init_printing(use_unicode=True)
13 r, theta, s, la, mu = symbols('r theta s la mu')
15 # start original formulation
24 p_rightvars = p_start.subs( theta, s/r ).subs( r, 1/la )
29 p_dirn_rightvars = diff(p_rightvars, s)
32 pprint(p_dirn_rightvars)
36 p_nosing = (p_rightvars
37 .replace( 1-cos(zeta) , 2*sin(zeta/2)**2 )
38 .replace( sin(zeta)**2 , zeta*sinc(zeta)*sin(zeta) )
40 p_nosing[1] = (p_nosing[1]
41 .replace( sin(zeta) , zeta * sinc(zeta) )
49 q_owncoords = p_nosing.replace(s,t).replace(la,-la)
50 q_dirn_owncoords = p_dirn_rightvars.replace(s,t).replace(la,-la)
52 q_dirn_owncoords_0 = q_dirn_owncoords.replace(t,0)
57 pprint(q_dirn_owncoords)
59 pprint(q_dirn_owncoords_0)
61 p2q_translate = p_nosing
62 #p2q_rotate_2d = Matrix([ p_dirn_rightvars[0:2],
65 p2q_rotate[0:2, 0] = Matrix([ -p_dirn_rightvars[1], p_dirn_rightvars[0] ])
66 p2q_rotate[0:2, 1] = p_dirn_rightvars[0:2]
67 #p2q_rotate.add_col([0,0])
68 #p2q_rotate.add_row([0,0,1])
70 print('\n p2q_rotate\n')
73 assert(Eq(p2q_rotate * Matrix([0,1,mu]), p_dirn_rightvars))
75 print('\n eye3 subs etc.\n')
76 pprint(Eq(eye(3) * Matrix([1,0,mu]),
77 p_dirn_rightvars .cross(Matrix([0,0,1]) .subs(s,0))))
79 print('\n eye3 etc.\n')
80 pprint(Eq(p2q_rotate * Matrix([1,0,mu]),
81 p_dirn_rightvars .cross(Matrix([0,0,1]))))
83 #eq = Eq(qmat * q_dirn_owncoords_0, p_dirn_rightvars)