<< Graphics`Shapes`

    
rasen1 = 
        ParametricPlot3D[{4.7*Cos[t - Pi/8], 
            4.7  Sin[t - Pi/8], -1/2*t}, {t, 0, 10*Pi}, 
          PlotPoints -> 300];
rasen2 = 
        ParametricPlot3D[{5.3*Cos[t - Pi/8], 
            5.3*Sin[t - Pi/8], -1/2*t}, {t, 0, 10*Pi}, 
          PlotPoints -> 300];

    
ballgif = {};
endgif = {};
cameragif = {};

    
Do[
vx := 1.3/4 /; t < 0; 
vx := 
          1.3*(t + 4/3*Pi)/(8/3*Pi) /; 
            0 ≤ t ≤ 4/3*Pi; 
vx := 
          1.3 /; t > 4/3*Pi; 
vy := -1.3/4 /; 
            t < 0; 
vy := -1.3*(t + 4/3*Pi)/(8/3*
                    Pi) /; 0 ≤ t ≤ 
              4/3*Pi; 
vy := -1.3 /; 
            t > 4/3*Pi; 
vz = 
          1; 

x1 := 
          5*Cos[t] /; 
            0 ≤ t ≤ 10*Pi; 
y1 := 
          5*Sin[t] /; 
            0 ≤ t ≤ 
              10*Pi; 
z1 := -1/2*t + 0.146 /; 
            0 ≤ t ≤ 10*Pi; 
x1 := 
          5 /; t < 0; 
y1 := 
          0 /; t < 0; 
z1 := -3*t + 0.146 /; 
            t < 0; 
x1 := 
          5 /; t > 10*Pi; 
y1 := 
          5*(t - 10*Pi) /; t > 10*Pi; 
z1 := -5*Pi /; 
            t > 10*Pi; 

x2 := 
          5*Cos[t - 1/3*Pi] /; 
            0 ≤ t - 1/3*Pi ≤ 
              10*Pi; 
y2 := 
          5*Sin[t - 1/3*Pi] /; 
            0 ≤ t - 1/3*Pi ≤ 
              10*Pi; 
z2 := -1/2*(t - 1/3*Pi) + 
              0.146 /; 0 ≤ t - 1/3*Pi ≤ 
              10*Pi; 
x2 := 
          5 /; t - 1/3*Pi < 0; 
y2 := 
          0 /; t - 1/3*Pi < 0; 
z2 := -3*t + Pi + 
              0.146 /; t - 1/3*Pi < 0; 
x2 := 
          5 /; t - 1/3*Pi > 10*Pi; 
y2 := 
          5*(t - 1/3*Pi - 10*Pi) /; 
            t - 1/3*Pi > 10*Pi; 
z2 := -5*Pi /; 
            t - 1/3*Pi > 10*Pi; 

x3 := 
          5*Cos[t - 2/3*Pi] /; 
            0 ≤ t - 2/3*Pi ≤ 
              10*Pi; 
y3 := 
          5*Sin[t - 2/3*Pi] /; 
            0 ≤ t - 2/3*Pi ≤ 
              10*Pi; 
z3 := -1/2*(t - 2/3*Pi) + 
              0.146 /; 0 ≤ t - 2/3*Pi ≤ 
              10*Pi; 
x3 := 
          5 /; t - 2/3*Pi < 0; 
y3 := 
          0 /; t - 2/3*Pi < 0; 
z3 := -3*t + 2*Pi + 
              0.146 /; t - 2/3*Pi < 0; 
x3 := 
          5 /; t - 2/3*Pi > 10*Pi; 
y3 := 
          5*(t - 2/3*Pi - 10*Pi) /; 
            t - 2/3*Pi > 10*Pi; 
z3 := -5*Pi /; 
            t - 2/3*Pi > 10*Pi; 

R1 = 
          TranslateShape[
            RotateShape[Sphere[1], 0, 5*t, 0], {x1, y1, 
              z1}]; 
R2 = 
          TranslateShape[
            RotateShape[Sphere[1], 0, 5*t, 0], {x2, y2, 
              z2}]; 
R3 = 
          TranslateShape[
            RotateShape[Sphere[1], 0, 5*t, 0], {x3, y3, 
              z3}]; 
ball = 
          Show[Graphics3D[R1], Graphics3D[R2], Graphics3D[R3], rasen1, 
            rasen2, PlotRange -> {{-6, 6}, {-6, 6}, {-17, 8}}, 
            Boxed -> False, Axes -> False, 
            ViewPoint -> {vx, vy, vz}]; 
AppendTo[
          ballgif, ball];
, {t, -2/3*Pi, 11.3*Pi, 
          1/12*Pi}
];