Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- f[x_] := If[Abs[x] < 1, -Sqrt[1 - x^2], 0];
- (*f[x_]:=x^2;*)
- n = 100;
- T = 300;
- lines = Table[line[{-1 + 2 i/n, 1}, Pi, T, 0.1, f, 0.01, 3],
- {i, n - 1}];
- T = Length[lines];
- Clear[line];
- line[p0_, \[Theta]0_, n_, dx_, f_, \[Sigma]_: 0.01, r_: 5] :=
- Module[{p = p0, p1, \[Theta] = \[Theta]0, out, x},
- out = {p};
- Do[
- \[Theta] += RandomVariate[NormalDistribution[0, \[Sigma]]];
- p1 = p;
- p += dx {Sin[\[Theta]], Cos[\[Theta]]};
- x = (p[[1]] + p1[[1]])/2;
- If[And[f[p1[[1]]] < p1[[2]], f[p[[1]]] > p[[2]]],
- With[{\[Beta] = ArcTan[f'[x]]},
- \[Theta] = Pi - \[Theta] - 2 \[Beta];
- ];
- p = {x, f[x]};
- ];
- AppendTo[out, p];
- , {i, n}];
- MovingAverage[out, r]
- ];
- frame[t_] := Rotate[(Show[
- Graphics[{
- Opacity[0.5], Thickness[0.003],
- Table[
- {ColorData["DarkRainbow"][i/n],
- Line[lines[[i]][[
- If[t <= T, 1, t - T] ;; If[t < T, t, T]]]]},
- {i, Length@lines}
- ]
- }, PlotRange -> {{-1, 1}, {-1.1, 1}}, Background -> White,
- ImageSize -> 250],
- Plot[f[x], {x, -1, 1}, PlotStyle -> Directive[Thick, White]]
- ]), Pi];
- Manipulate[
- frame[t],
- {{t, T}, 0, 2 T + 1, 1}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement