MATHEMATICA CODE

<< Graphics`ParametricPlot3D`;
alpha=Pi/60;
k=N[(1+Sin[alpha])/(1-Sin[alpha])];
a[x_]=k^x;
b[x_]=(1/7)(5-Tan[0.5(-x+0.2)]^7);
c[x_,y_]=1+(1/4)(1-Abs[Sin[6x]])(1-Abs[Cos[3y]]);
ParametricPlot3D[{
a[t]b[r]c[r,t]Cos[r]Cos[-t],
a[t]b[r]c[r,t]Cos[r]Sin[-t],
a[t]b[r]c[r,t]Sin[r]-1.6a[t]},
{t,0,8Pi},{r,-Pi/2,Pi/2},
PlotPoints -> {81, 21},
PlotRange -> All,
Axes -> False,
Boxed -> False]
ViewPoint->{1.794,-2.869,-0.026}
  フレームの中でドラッグすると回転し、離すとそのまま回転を続けます。