In[]:=
Clear["Global`*"]
(*--------Equations​​​​
I
x
=
I
1
,
I
y
=
I
2
,
I
z
=
I
3
,​​
ω
x
=
ω
1
,
ω
y
=
ω
2
,
ω
z
=
ω
3
,​​​​
I
1
*
ω
1
'[t]+(
I
2
-
I
3
)*
ω
3
[t]*
ω
2
[t]0,​​
I
2
*
ω
2
'[t]+(
I
3
-
I
1
)*
ω
1
[t]*
ω
3
[t]0,​​
I
3
*
ω
3
'[t]+(
I
1
-
I
2
)*
ω
2
[t]*
ω
1
[t]0,​​​​
ω
1
[t]=ϕ'[t]*Sin[θ[t]]*Sin[ψ[t]]+θ'[t]*Cos[ψ[t]],​​
ω
2
[t]=ϕ'[t]*Sin[θ[t]]*Cos[ψ[t]]-θ'[t]*Sin[ψ[t]],​​
ω
3
[t]=ϕ'[t]*Cos[θ[t]]+ψ'[t].​​​​andmotionx,y,z​​​​∑Fxm*x''[t],​​∑Fym*y''[t],​​∑Fzm*z''[t],​​​​*)​​
In[]:=
Clear["Global`*"]
In[]:=
TIME=2;​​ma=0.15;(*Ringmass[kg]*)​​a=0.13;(*Ringradius[m]*)​​ml=0.18;(*Rodmass[kg]*)​​l=0.38;(*Rodradius[m]*)​​g=9.81;(*Gravitationalacceleration[m/s^2]*)​​m=ma+ml;(*RodandRingmass[kg]*)​​R=
ml*a+
l
2
ma+ml
;(*centerofmass*)​​
I
1
=
1
2
*ma*
2
a
;(*Momentofinteriathe1-axis[kg*
2
m
]*)​​
I
2
=
1
2
*ma*
2
a
+ma*
2
R
+
1
12
*ml*
2
l
+ml*a+
l
2
-R;(*Momentofinteriathe2-axis[kg*
2
m
]*)​​
I
3
=
I
1
+
I
2
;(*Momentofinteriathe3-axis[kg*
2
m
]*)
In[]:=
{Phi,Theta,Psi,Xx,Yy,Zz}=NDSolveValue[​​{m*x''[t]0,​​m*y''[t]0,​​m*z''[t]-m*g,
I
1
*(Cos[θ[t]]*Sin[ψ[t]]*θ'[t]*ϕ'[t]-Sin[ψ[t]]*θ'[t]*ψ'[t]+Cos[ψ[t]]*Sin[θ[t]]*ϕ'[t]*ψ'[t]+Cos[ψ[t]]*θ''[t]+Sin[θ[t]]*Sin[ψ[t]]*ϕ''[t])+(
I
2
-
I
3
)*(ϕ'[t]*Cos[θ[t]]+ψ'[t])*(ϕ'[t]*Sin[θ[t]]*Cos[ψ[t]]-θ'[t]*Sin[ψ[t]])0,​​
I
2
*(Cos[θ[t]]*Cos[ψ[t]]*θ'[t]*ϕ'[t]-Cos[ψ[t]]*θ'[t]*ψ'[t]-Sin[θ[t]]*Sin[ψ[t]]*ϕ'[t]*ψ'[t]-Sin[ψ[t]]*θ''[t]+Cos[ψ[t]]*Sin[θ[t]]*ϕ''[t])+(
I
3
-
I
1
)*(ϕ'[t]*Sin[θ[t]]*Sin[ψ[t]]+θ'[t]*Cos[ψ[t]])*(ϕ'[t]*Cos[θ[t]]+ψ'[t])0,​​
I
3
*(-Sin[θ[t]]*θ'[t]*ϕ'[t]+Cos[θ[t]]*ϕ''[t]+ψ''[t])+(
I
1
-
I
2
)*(ϕ'[t]*Sin[θ[t]]*Cos[ψ[t]]-θ'[t]*Sin[ψ[t]])*(ϕ'[t]*Sin[θ[t]]*Sin[ψ[t]]+θ'[t]*Cos[ψ[t]])0​​,​​x[0]0,​​x'[0]0,​​y[0]0,​​y'[0]0,​​z[0]-1,​​z'[0]6,​​ϕ[0]π/2,​​θ[0]π/2,​​ψ[0]0,​​ϕ'[0]-4π,​​θ'[0]π/16,​​ψ'[0]π/16},{ϕ,θ,ψ,x,y,z},{t,0,TIME}];
In[]:=
Animate[​​Graphics3D[GeometricTransformation[{Blue,Cylinder[{{-0.03,0,0.15},{0,0,0.15}},0.1],Green,Cylinder[{{0,0,0.15},{0.03,0,0.15}},0.1],Black,Cylinder[{{0,0,0.05},{0,0,-0.25}},0.033]},Composition[TranslationTransform[{Xx[t],Yy[t],Zz[t]}],Composition[RotationTransform[Phi[t],{1,0,0}],RotationTransform[Psi[t],{0,1,0}],RotationTransform[Theta[t],{0,0,1}]]]],BoxedTrue,SphericalRegionTrue,PlotRange1.1,AxesTrue,TicksNone,AxesLabel{x,y,z},BackgroundLightGreen],{{t,0,"time"},0,1.25},AnimationRunningFalse,SaveDefinitionsTrue]
Out[]=
time