我知道我的论文,我想用 tikz 画一个图形,就像你在图片中看到的那样,有人可以帮忙吗

我知道我的论文,我想用 tikz 画一个图形,就像你在图片中看到的那样,有人可以帮忙吗

我知道我的论文,我想用 tikz 绘制一个图形,就像你在图片中看到的那样,有人可以帮忙吗?

在此处输入图片描述 我知道我需要使用 foreach 来绘制这种子弹,但我不知道我究竟该如何在上面画圆圈。谢谢!问候

答案1

这是给你一个开始。正如 John Kormylo 所说,你想使用pic

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,calc}
\tikzset{shifted by/.style={to path={($(\tikztostart)!#1!90:(\tikztotarget)$) 
-- ($(\tikztotarget)!#1!-90:(\tikztostart)$) \tikztonodes}}}
\begin{document}
\begin{tikzpicture}[pics/tadpole/.style={code={
    \tikzset{tadpole/.cd,#1}
    \def\pv##1{\pgfkeysvalueof{/tikz/tadpole/##1}}%
    \draw[thick,pic actions] (0,0) circle[radius=\pv{r}]
     plot[smooth,samples at={0,...,5},variable=\t] 
     (\pv{r}+\t*\pv{l}/5,{\pv{h}*rnd*(\t>0)});
    }},tadpole/.cd,r/.initial=0.3,l/.initial=1.5,h/.initial=0.15,
    /tikz/.cd,>={Latex}]
    \path[local bounding box=top] foreach \X in {1,...,12}
     {(\X,0) pic[rotate=90]{tadpole}};
    \draw[thick] (0.5,0.3) -- (12.5,0.3); 
    %
    \begin{scope}[local bounding box=rnd,shift={(2,-4)}]
     \pgfmathsetseed{3}
     \foreach \X in {1,...,6}
      {\pgfmathsetmacro{\myrnd}{rnd*360}
      \path (\myrnd:rnd*3) pic[rotate=\myrnd+60*rnd-30]{tadpole};}
    \end{scope}
    %
    \begin{scope}[shift={(9,-7)},local bounding box=ring] 
     \path  foreach \X in {1,...,15} {
     ({24*\X+2*(rnd-0.5)}:2.1) pic[rotate={180+24*\X+2*(rnd-0.5)}]{tadpole}};
    \end{scope}
    %
    \draw[->,thick,shifted by=4pt] ([yshift=-1ex]top.-110) to 
     node[midway,below right]{$c_T<c_K$} (rnd.north east);  
    \draw[->,thick,shifted by=4pt] (rnd.north east) to ([yshift=-1ex]top.-110); 
    \draw[->,thick,shifted by=4pt] (ring.150) to (rnd.-10); 
    \draw[->,thick,shifted by=4pt] (rnd.-10) to 
        node[midway,above right]{$c_T\ge c_K$} (ring.150);  
\end{tikzpicture}
\end{document}

在此处输入图片描述

为了未来,请自己尝试一些事情,如果遇到困难,请在这里发布问题。

相关内容