Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- c = 1.;
- a = 3.5;
- freq = .2;
- v = 1.4;
- n = 20;
- maxT = 30.;
- \[Alpha]Iso = 0.615479708;
- smoothstep[t_] :=
- If[t < 0, 0, If[t > 1, 1, 6 t^5 - 15 t^4 + 10 t^3]];
- t0 = 20.;
- t1 = 40.;
- t2 = 45.;
- t3 = 55.;
- \[Alpha][t_] :=
- Pi/2 (1 - smoothstep[(t - t0)/(t1 - t0)]) +
- smoothstep[(t - t0)/(t1 - t0)] \[Alpha]Iso;
- \[Beta][t_] := -smoothstep[(t - t0)/(t1 - t0)] N[Pi/6] -
- Pi smoothstep[(t - t2)/(t3 - t2)]/2;
- \[Gamma][t_] := 0;
- z[t_] := 0.5 (1 - smoothstep[(t - t0)/(t1 - t0)]) +
- 0.2 smoothstep[(t - t0)/(t1 - t0)];
- offset[t_] := (
- {0, -15,
- 0} (smoothstep[(t - t0)/(t1 - t0)] -
- smoothstep[(t - t2)/(t3 - t2)]) +
- {15, 0, 0} smoothstep[(t - t2)/(t3 - t2)]
- );
- proj[p_, t_] :=
- With[{\[Alpha] = \[Alpha][t], \[Beta] = \[Beta][
- t], \[Gamma] = \[Gamma][t], z = z[t]},
- ({{Cos[\[Beta]] Cos[\[Gamma]] -
- Sin[\[Beta]] Sin[\[Gamma]], -Cos[\[Gamma]] Sin[\[Beta]] -
- Cos[\[Beta]] Sin[\[Gamma]],
- 0}, {Cos[\[Alpha]] Cos[\[Gamma]] Sin[\[Beta]] +
- Cos[\[Alpha]] Cos[\[Beta]] Sin[\[Gamma]],
- Cos[\[Alpha]] Cos[\[Beta]] -
- Cos[\[Alpha]] Sin[\[Beta]] Sin[\[Gamma]], -Sin[\[Alpha]]}, \
- {Cos[\[Gamma]] Sin[\[Alpha]] Sin[\[Beta]] +
- Cos[\[Beta]] Sin[\[Alpha]] Sin[\[Gamma]],
- Cos[\[Beta]] Cos[\[Gamma]] Sin[\[Alpha]] -
- Sin[\[Alpha]] Sin[\[Beta]] Sin[\[Gamma]],
- Cos[\[Alpha]]}}.(p - offset[t]))[[{1, 3}]]*z
- ];
- d\[Theta] = 2 Pi / 32;
- w = 60;
- nGrid = 7;
- frame[t_] := (Show[
- Graphics[{
- White,
- PointSize[Large],
- Point[proj[{a, 0, 0}, t]],
- {
- GrayLevel[0.4],
- Thickness[0.002],
- Opacity[smoothstep[(t - t0)/(t1 - t0)]],
- Table[
- Line[{proj[{x, -w, -maxT v}, t], proj[{x, w, -maxT v}, t]}],
- {x, -w, w, w/nGrid}
- ],
- Table[
- Line[{proj[{-w, y, -maxT v}, t], proj[{w, y, -maxT v}, t]}],
- {y, -w, w, w/nGrid}
- ]
- },
- If[c t > a,
- {
- Opacity[0.6 smoothstep[(t - t0)/(t1 - t0)]],
- FaceForm[White],
- Polygon[Join[
- Table[
- proj[{tt , Sqrt[4 a tt], -v (tt + a)/c}, t]
- , {tt, 0, c Min[ t, maxT] - a, 0.01}],
- Reverse@Table[
- proj[{tt , -Sqrt[4 a tt], -v (tt + a)/c}, t]
- , {tt, 0, c Min[ t, maxT] - a, 0.01}]
- ]
- ]
- },
- {}],
- Table[
- {
- Opacity[0.5 smoothstep[(t - t0)/(t1 - t0)]],
- ColorData["StarryNightColors"][0.5 + 0.5 Cos[\[Theta]]],
- Polygon[{
- proj[{a, 0, 0}, t],
- proj[{a, 0, -v maxT} +
- c maxT {Sin[\[Theta]], Cos[\[Theta]], 0}, t],
- proj[{a, 0, -v maxT} +
- c maxT {Sin[\[Theta] + d\[Theta]],
- Cos[\[Theta] + d\[Theta]], 0}, t]
- }]
- },
- {\[Theta], 0, 2 Pi - d\[Theta], d\[Theta]}
- ],
- If[c t > a,
- {
- Thickness[0.006], RGBColor[0.98, 0., 0.],
- Line[Table[
- proj[{tt , Sqrt[4 a tt], -v (tt + a)/c}, t]
- , {tt, 0, c Min[ t, maxT] - a, 0.01}]],
- Line[Table[
- proj[{tt , -Sqrt[4 a tt], -v (tt + a)/c}, t]
- , {tt, 0, c Min[ t, maxT] - a, 0.01}]
- ]
- },
- {}],
- Table[
- Module[{tt = Min[maxT, t - i / freq]},
- {
- Opacity[1 - smoothstep[(t - t2)/(t3 - t2)]],
- {
- EdgeForm[
- Directive[Opacity[1 - smoothstep[(t - t2)/(t3 - t2)]],
- White]], FaceForm[],
- If[c tt > 0,
- Polygon[
- Table[proj[{a, 0, -v tt} +
- c tt {Sin[\[Theta]], Cos[\[Theta]], 0}, t], {\[Theta],
- 0, 2 Pi - 0.1, 0.1}]],
- {}
- ]
- },
- Line[{proj[{-a + c tt, -20, -v tt}, t],
- proj[{-a + c tt, 20, - v tt}, t]}],
- If[c tt > a,
- {
- White,
- Point[proj[{c tt - a , -Sqrt[4 a (c tt - a)], -v tt}, t]],
- Point[proj[{c tt - a , Sqrt[4 a (c tt - a)], - v tt}, t]]
- }
- ]
- }
- ],
- {i, 0, n - 1}
- ]
- },
- PlotRange -> 10, Background -> Black, ImageSize -> 500
- ]
- ]
- );
- Manipulate[
- frame[t],
- {{t, 55}, 0, 55}]
Advertisement
Add Comment
Please, Sign In to add comment