30 lines
566 B
Python

import sympy as sm
import sympy.physics.mechanics as me
sm.init_printing()
q1, q2, q3, q4 = sm.symbols('q1:5')
l1, l2, l3, l4 = sm.symbols('l1:5')
N, A, B, C = sm.symbols('N, A, B, C', cls=me.ReferenceFrame)
A.orient_body_fixed(N, (q1, q2, 0), 'ZXZ')
print(A.dcm(N))
B.orient_axis(A, q3, A.x)
C.orient_body_fixed(B, (q3, q4, 0), 'XZX')
r_P1_P2 = l1 * A.z
print(r_P1_P2)
r_P2_P3 = l2 * B.z
print(r_P2_P3)
r_P3_P4 = l3 *C.z - l4 *C.y
print(r_P3_P4)
r_P1_P4 = r_P1_P2 + r_P2_P3 + r_P3_P4
print(r_P1_P4)
print(r_P1_P4.express(B))
print(r_P1_P4.free_symbols(N))