如何使用 Tikz 通过 DPC 和光度计绘制光散射

如何使用 Tikz 通过 DPC 和光度计绘制光散射

我目前正在使用 Latex 撰写我的博士论文。有人告诉我最好使用 Tikz 绘制图表。但是,我以前从未使用过 Tikz。我喜欢绘制如下所示的图表。请在这方面帮助我。提前致谢。 在此处输入图片描述

答案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}

在此处输入图片描述

相关内容