import pynamics
from pynamics.system import System
from pynamics.frame import Frame
import sympy

system = System()
pynamics.set_system(__name__,system)

Heading

Text

a,b,c=sympy.symbols('a b c')

N = Frame('N',system)
A = Frame('A',system)
B = Frame('B',system)

A.rotate_fixed_axis(N,[0,0,1],a,system)
B.rotate_fixed_axis(A,[0,1,0],b,system)

R_BA = B.get_r_from(A)
R_AN = A.get_r_from(N)
R_BN = B.get_r_from(N)

R_BA*R_AN
Matrix([
[cos(a)*cos(b), sin(a)*cos(b), -sin(b)],
[      -sin(a),        cos(a),       0],
[sin(b)*cos(a), sin(a)*sin(b),  cos(b)]])
R_BN
Matrix([
[cos(a)*cos(b), sin(a)*cos(b), -sin(b)],
[      -sin(a),        cos(a),       0],
[sin(b)*cos(a), sin(a)*sin(b),  cos(b)]])
v1 = 3*A.x+2*N.z
v1.express(N)
3*N.x*cos(a) + 3*N.y*sin(a) + 2*N.z
v2 = 7*N.z+4*A.y
v2
4*A.y + 7*N.z
v1.dot(v2)
14
10*A.x+5*B.x
10*A.x + 5*B.x
v1.dot(v1)
13
v1.length()
3.60555127546399
v3 = v1.cross(v2)
from math import pi
v4 = v3.express(N).subs({a:30*pi/180})
v4
3.57179676972449*N.x - 22.1865334794732*N.y + 12*N.z
v4x = v4.dot(N.x)
v4x
3.57179676972449