Movimento sobre um carrossel que gira - cálculo no referencial girante comparado com transformação de coordenada

ω=1 (* frequencia angular do carrossel *)

r0=0.5  (* posição inicial do objeto, com θ=π *)

disco=Graphics[Circle[{0,0},1] ];

matriz de transformação do solo para o carrossel

m[w_,t_]:=Module[{c=Cos[w t],s=Sin[w t]},{{c,s},{-s,c}}]

equações horárias {x(t),y(t)} no sistema solo. Lembrar que v0y no carrossel tem que ser transformado para o sistema solo E que fixamos o ponto de lançamento em x=-r0, y=0

mru[v_,q_,t_]:={-r0+v Cos[q]t,(v  Sin[q]-ω r0)t}

transformação polar -> retangular, trazendo a coordenada polar para o domínio da função FromPolarCoordinates, que é -π < θ < =π

xy[{r_,q_}]:=Module[{qc},qc=If[-Pi<q<=Pi,q,Mod[q+Pi,2Pi]-Pi];
FromPolarCoordinates[{r,qc}]
]

ParametricBDSolve exige que parâmetros correspondentes às condições iniciais sejam as próprias condições iniciais, sem transformação; o manipulador fará a transformação.

sp=ParametricNDSolve[{r''[t]-r[t]q'[t]^2==2ω r[t] q'[t]+ω^2 r[t],2r'[t]q'[t]+r[t] q''[t]==-2ω r'[t],r'[0]==vr0,q'[0]==vq0 ,r[0]==r0,q[0]==Pi},{r,q},{t,0,20},{vr0,vq0}]

Condições ajustáveis: v0, módulo da velocidade inicial e θ, ângulo com o eixo Ox.

Manipulate[ Module[{vr,vq,rt,qt,u},vr=-v0 Cos[θ];
vq=-v0 Sin[θ]/r0;
rt=(r/.sp)[vr,vq];
qt=(q/.sp)[vr,vq];
u=Table[xy[{rt[t],qt[t]}],{t,0,20,0.05}];Show[disco,ListPlot[Select[u,Norm[#]<1&],AspectRatio->1,PlotStyle->Red],ParametricPlot[ m[ω,t].mru[v0,θ,t],{t,0,20},RegionFunction->Function[{x,y},x^2+y^2<1] ] ]
],
{{v0,1},0.001,3,0.002},(* não permite v0 = ω r0 ao escolher 0.001 como limite inferior e 0.002 como intervalo *)
{{θ,90Degree},-90Degree,90Degree,1Degree}]