Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a1 = 0.5;
- a2 = 0.8;
- ball[\[Theta]_, t_, v_] := {-a1, 0} +
- t v {Cos[\[Theta]], -Sin[\[Theta]]};
- ballTrace[\[Theta]_, t_, tt_,
- v_] := {Cos[t - tt] (-a1 + tt v Cos[\[Theta]]) -
- tt v Sin[t - tt] Sin[\[Theta]], -(-a1 + tt v Cos[\[Theta]]) Sin[
- t - tt] - tt v Cos[t - tt] Sin[\[Theta]]};
- p1[t_] := a1 {-Cos[t], Sin[t]};
- p2[t_] := a2 {Cos[t], -Sin[t]};
- Clear[\[Theta], v];
- \[Theta][t_] := Mod[ArcTan[a1 + a2 Cos[t], a2 Sin[t]], 2 Pi];
- v[t_] := Norm[p2[t] - p1[0]]/t;
- frame[t_] := (
- Graphics[
- Rotate[
- {{
- {EdgeForm[Black], FaceForm[White], Disk[]},
- {GrayLevel[0.7],
- Table[Line[{{0, 0}, {Cos[\[Theta] - t],
- Sin[\[Theta] - t]}}], {\[Theta], 2 Pi/16., 2 Pi, 2 Pi/8}]},
- Table[
- {
- PointSize[Medium],
- ColorData["DarkRainbow"][0.5 + 0.5 Cos[tmax]],
- If[Mod[t, 2 Pi] < tmax,
- Point[ball[\[Theta][tmax], Mod[t, 2 Pi], v[tmax]]], {}],
- If[t < 2 Pi,
- Line[{p1[0], ball[\[Theta][tmax], Min[t, tmax], v[tmax]]}]
- ,
- Line[Table[ballTrace[\[Theta][tmax], t - 2 Pi, tt, v[tmax]]
- , {tt, 0, Min[t - 2 Pi, tmax], Min[t - 2 Pi, tmax]/100}]]
- ]
- }
- , {tmax, 0.01, 2 Pi, 0.2}],
- {PointSize[Large], Point[p2[t]]}
- }},
- If[t > 2 Pi, t, 0]],
- PlotRange -> 1.1, Background -> Black]
- );
- Manipulate[
- frame[t]
- , {t, 0.001, 4 Pi}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement