如何使用 tikz 说明汉明距离

如何使用 tikz 说明汉明距离

用于重现下图的一小段 tikz 代码是什么?

在此处输入图片描述

这说明了与该源的汉明距离:http://withits.epfl.ch/_media/events/slides-elgamal.pdf

笔记:我对这个问题很熟悉绘制一个$\epsilon$邻域,但它并没有真正回答我的探索。

答案1

欢迎来到 TeX.SE!编辑:调整tension参数以获得更平滑的输出。

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \draw[double distance=6pt,fill=blue] plot[smooth cycle,tension=0.7] coordinates {(0,0) (0.3,0.6) (1,0.8) (1.4,0.2)
 (1.2,-0.3) (0.4,-0.4)};
 \draw[latex-] (3pt,0) -- ++(-1,-0.2) node[left]{$\mathcal{A}$};
 \draw[latex-] (1.4cm+3pt,0.2) -- ++(1,-0.2)
 node[right]{$\Gamma_\ell(\mathcal{A})$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

这个动画稍微展示了一下张力的作用。

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\foreach \X in {0.5,0.6,...,1.5}
{\begin{tikzpicture}
 \draw[double distance=6pt,fill=blue] plot[smooth cycle,tension=\X] coordinates {(0,0) (0.3,0.6) (1,0.8) (1.4,0.2)
 (1.2,-0.3) (0.4,-0.4)};
 \draw[latex-] (3pt,0) -- ++(-1,-0.2) node[left]{$\mathcal{A}$};
 \draw[latex-] (1.4cm+3pt,0.2) -- ++(1,-0.2)
 node[right]{$\Gamma_\ell(\mathcal{A})$};
\end{tikzpicture}}
\end{document}

在此处输入图片描述

当然你也可以调整坐标。

答案2

你可以简单地先画一个三角形,像\draw (1,0)--(-2,3)--(2,5)--cycle,然后借助网格在每对顶点之间添加两个控制点,像.. controls (a) and (b)..。你需要稍微调整控制点,以获得所需的形状。看看这个答案例如,了解更多有关如何选择控制点的信息。

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[scale=.5, > = Stealth] 
 \draw[double distance=10pt,fill=blue] (1,0)  .. controls (-1.5,0) and (-2.5,2)..
                                       (-2,3) .. controls (-1,5)   and (1,5.3) ..
                                       (2,5)  .. controls (5,4)    and (3,0)   .. 
                                       (1,0)  -- cycle;
 \draw[<-] (-1.5,1.5) -- ++(-1,-0.2) node[left]{$\mathcal{A}$};
 \draw[<-] (3.5,1.5)  -- ++(1,-0.2)  node[right]{$\Gamma_\ell(\mathcal{A})$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容