Advertisement
Guest User

balls on roundabout

a guest
Mar 29th, 2020
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. a1 = 0.5;
  2. a2 = 0.8;
  3. ball[\[Theta]_, t_, v_] := {-a1, 0} +
  4. t v {Cos[\[Theta]], -Sin[\[Theta]]};
  5. ballTrace[\[Theta]_, t_, tt_,
  6. v_] := {Cos[t - tt] (-a1 + tt v Cos[\[Theta]]) -
  7. tt v Sin[t - tt] Sin[\[Theta]], -(-a1 + tt v Cos[\[Theta]]) Sin[
  8. t - tt] - tt v Cos[t - tt] Sin[\[Theta]]};
  9. p1[t_] := a1 {-Cos[t], Sin[t]};
  10. p2[t_] := a2 {Cos[t], -Sin[t]};
  11. Clear[\[Theta], v];
  12. \[Theta][t_] := Mod[ArcTan[a1 + a2 Cos[t], a2 Sin[t]], 2 Pi];
  13. v[t_] := Norm[p2[t] - p1[0]]/t;
  14. frame[t_] := (
  15. Graphics[
  16. Rotate[
  17. {{
  18. {EdgeForm[Black], FaceForm[White], Disk[]},
  19. {GrayLevel[0.7],
  20. Table[Line[{{0, 0}, {Cos[\[Theta] - t],
  21. Sin[\[Theta] - t]}}], {\[Theta], 2 Pi/16., 2 Pi, 2 Pi/8}]},
  22. Table[
  23. {
  24. PointSize[Medium],
  25. ColorData["DarkRainbow"][0.5 + 0.5 Cos[tmax]],
  26. If[Mod[t, 2 Pi] < tmax,
  27. Point[ball[\[Theta][tmax], Mod[t, 2 Pi], v[tmax]]], {}],
  28. If[t < 2 Pi,
  29. Line[{p1[0], ball[\[Theta][tmax], Min[t, tmax], v[tmax]]}]
  30. ,
  31. Line[Table[ballTrace[\[Theta][tmax], t - 2 Pi, tt, v[tmax]]
  32. , {tt, 0, Min[t - 2 Pi, tmax], Min[t - 2 Pi, tmax]/100}]]
  33. ]
  34. }
  35. , {tmax, 0.01, 2 Pi, 0.2}],
  36. {PointSize[Large], Point[p2[t]]}
  37. }},
  38. If[t > 2 Pi, t, 0]],
  39. PlotRange -> 1.1, Background -> Black]
  40. );
  41. Manipulate[
  42. frame[t]
  43. , {t, 0.001, 4 Pi}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement