Advertisement
Matthen

Ball bouncing, off walls too

Sep 26th, 2012
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. (* much faster than yesterday's *)
  2.  
  3. g = 0.1; k = 0.01; TMax = 100; num = 40; vxmax = 0.99; boxwidth = 15; \
  4. tail = TMax;
  5. path[vx_] := NDSolve[{x'[0] == vx, y'[0] == Sqrt[1 - vx^2],
  6. x''[t] == -20 Sign[x[t]] ( Tanh[x[t]^2 - boxwidth^2] + 1),
  7. y''[t] == -0.1 - 20 (Tanh[20 y[t]] - 1)/2 - k y'[t], x[0] == 0,
  8. y[0] == 0.1}, {x[t], y[t]}, {t, 0, TMax}];
  9.  
  10. paths = Table[path[v], {v, -vxmax, vxmax, (2 vxmax)/num}];
  11. frame[T_] :=
  12. Show[Table[
  13. ParametricPlot[
  14. First[{x[t], y[t]} /. paths[[i]]] /. {t -> tt}, {tt,
  15. Max[0, T - tail], T},
  16. PlotRange -> {{-boxwidth, boxwidth}, {-1, 10}}, Axes -> None,
  17. PlotStyle ->
  18. Directive[Opacity[0.8],
  19. ColorData["RedBlueTones"][i/Length[paths]]]]
  20. , {i, Length@paths}],
  21. Graphics[{
  22. PointSize[Medium], RGBColor[0.3, 0.4, 0.9],
  23. Table[{Darker@Darker@ColorData["RedBlueTones"][i/Length[paths]],
  24. Point[First[{x[t], y[t]} /. paths[[i]] /. {t -> T}]]}
  25. , {i, Length@paths}]
  26.  
  27. }
  28. ]
  29. ];
  30.  
  31. Manipulate[frame[T], {T, 0.01, TMax}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement