答案1
这些都不难,但画起来很乏味。所以这是一个开始要完成这个图形,你只需要重复一些事情。
\documentclass[tikz,border=1mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{backgrounds,shapes.arrows}
\tikzset{marrow/.style={sloped,minimum height=1.4cm,minimum width=1.2cm,
single arrow, single arrow
head extend=.125cm, single arrow head indent=.08cm, allow upside down}}
\begin{document}
\tdplotsetmaincoords{70}{30}
\begin{tikzpicture}[tdplot_main_coords,declare function={h=5;hz=2;r=0.5;},line
join=round,line cap=round]
% axes
\path (0,0,0) coordinate (O);
\draw[dashed] (-4,0,0) -- (4,0,0) (0,-4,0) -- (0,4,0) (0,0,-4) -- (0,0,4);
% blue dots
\path foreach \X in {1,...,20}{[/utils/exec=\pgfmathsetmacro{\rndan}{360*rnd}%
\pgfmathsetmacro{\rrndr}{r*rnd}]
({\rrndr*cos(\rndan)},{\rrndr*sin(\rndan)},{-h/2+1.2*h*rnd})
node[fill=blue!60,circle,inner sep=1pt]{} };
% cylinder
\draw plot[variable=\t,domain=0:360] ({r*cos(\t)},{r*sin(\t)},h/2)
plot[variable=\t,domain=0:360] ({r*cos(\t)},{r*sin(\t)},h/2)
({r*cos(\tdplotmainphi)},{r*sin(\tdplotmainphi)},h/2) --
plot[variable=\t,domain=\tdplotmainphi:\tdplotmainphi-180]
({r*cos(\t)},{r*sin(\t)},-h/2)--
({r*cos(\tdplotmainphi-180)},{r*sin(\tdplotmainphi-180)},h/2);
\draw[densely dotted] plot[variable=\t,domain=\tdplotmainphi:\tdplotmainphi+180]
({r*cos(\t)},{r*sin(\t)},hz) ;
% sphere
\draw[fill=orange,fill opacity=0.2] plot[variable=\t,domain=\tdplotmainphi:\tdplotmainphi-180]
({r*cos(\t)},{r*sin(\t)},hz) coordinate(aux)
[tdplot_screen_coords]
let \p1=($(aux)-(O)$),\n1={atan2(\y1,\x1)},
\n2={veclen(\y1,\x1)}
in (\n1:\n2) arc(\n1:540-\n1:\n2) ;
% arc
\begin{scope}[canvas is yz plane at x=0]
\draw (-h/2-1,0) arc(180:90:h/2+1);
\end{scope}
% arrow
\begin{scope}[canvas is xy plane at z=0,transform shape]
\begin{scope}[on background layer]
\path (-4,0) -- (O) node[pos=0.5,marrow,draw,top color=red,bottom color=yellow,
shading angle={50}]{};
\draw[fill=orange!30] (-15:5) -- (O) -- (-45:5);
\end{scope}
\draw[dashed] (O) -- (-30:5)
node[pos=0.75,marrow,draw,solid,fill=yellow]{};
\pgflowlevelsynccm
\draw[latex-latex] (3,0) arc(0:-30:3)
node[pos=0.25,right] {$\eta$};
\end{scope}
\end{tikzpicture}
\end{document}