Another attempt, looking for a function as simple as possible that fits with the original drawing.
For example:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{3d,perspective}
\begin{document}
\begin{tikzpicture}[isometric view,blue]
\foreach\i in {-0.5,0.5}
\draw[canvas is xy plane at z=\i] (0,0) circle ({sqrt(4-\i*\i)});
\draw[red] plot[domain=135:315,samples=181]
({2*cos(\x)*sqrt(1-0.0625*sin(8*\x)*sin(8*\x))},
{2*sin(\x)*sqrt(1-0.0625*sin(8*\x)*sin(8*\x))},
{0.5*sin(8*\x)});
\draw[shading=ball,fill opacity=0.5] (0,0,0) circle (2cm);
\draw[red] plot[domain=-45:135,samples=181]
({2*cos(\x)*sqrt(1-0.0625*sin(8*\x)*sin(8*\x))},
{2*sin(\x)*sqrt(1-0.0625*sin(8*\x)*sin(8*\x))},
{0.5*sin(8*\x)});
\def\h{0.7} % arrows height
\pgfmathsetmacro\r{sqrt(4-\h*\h)} % arrows radii
\foreach\i in {10,55,100} \foreach\j in {-\h,\h}
\draw[-latex,canvas is xy plane at z=\j] (\i-10:\r) arc (\i-10:\i+10:\r);
\end{tikzpicture}
\end{document}
Edit 1: If you can't use the perspective
library you can create your own isometric view
adding this code to the preamble:
\pgfmathsetmacro\xx{1/sqrt(2)}
\pgfmathsetmacro\xy{1/sqrt(6)}
\pgfmathsetmacro\zz{sqrt(2/3)}
\tikzset{isometric view/.style={x={(-\xx cm,-\xy cm)},y={(\xx cm,-\xy cm)},z={(0cm,\zz cm)}}}
With this you can remove the rotate around z=180
option (these axes are defined with the rotation made).

Edit 2: There was an error in the sinusoidal function in the original post, now corrected.
This is a more customizable version. It has two parameters: the height of the circles and the sinusoidal function \h
, and the number of periods \n
(it must be a multiple of 4). The radius if always 1cm, but if you change the scale you can have any radius needed. This version improves the visibility too. It's not perfect yet, but it's a little bit better.
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{3d,perspective}
\begin{document}
\begin{tikzpicture}[isometric view,rotate around z=180,scale=2] % <-- radius =2
\def\h{0.1} % height
\def\n{20} % numer of sines (must be a multiple of 4)
\pgfmathsetmacro\c{sqrt(1.5)*\h} % clip height
\pgfmathsetmacro\s{\n*20+1} % samples
% circles, background
\foreach\i in {-1,1}
{
\begin{scope}
\clip (-1cm,\i*\c cm) rectangle (1cm,1cm);
\draw[blue,densely dashed,canvas is xy plane at z=\i*\h] (0,0) circle ({sqrt(1-\h*\h)});
\end{scope}
}
% function, background
\draw[red,densely dashed] plot[domain=135:315,samples=\s]
({cos(\x)*sqrt(1-\h*\h*sin(\n*\x)*sin(\n*\x))},
{sin(\x)*sqrt(1-\h*\h*sin(\n*\x)*sin(\n*\x))},
{\h*sin(\n*\x)});
% sphere
\draw[green,shading=ball,ball color=green,fill opacity=0.5] (0,0,0) circle (1cm);
% circles, foreground
\foreach\i in {-1,1}
{
\begin{scope}
\clip (-1cm,-1cm) rectangle (1cm,\i*\c cm);
\draw[blue,canvas is xy plane at z=\i*\h] (0,0) circle ({sqrt(1-\h*\h)});
\end{scope}
}
% function, foreground
\draw[red] plot[domain=-45:135,samples=\s]
({cos(\x)*sqrt(1-\h*\h*sin(\n*\x)*sin(\n*\x))},
{sin(\x)*sqrt(1-\h*\h*sin(\n*\x)*sin(\n*\x))},
{\h*sin(\n*\x)});
\end{tikzpicture}
\end{document}
