输出

输出

我正在尝试说明域内的传感器网络。这是我现在所拥有的:

在此处输入图片描述

下面是我用来生成该代码的代码:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}[scale=1]
        \foreach \i /\x/\y in {
            1/1/1.7320508075689,
            2/-1/1.7320508075689,
            3/-2/0,
            4/-1/-1.7320508075689,
            5/1/-1.7320508075689,
            6/2/0,
            7/4/0,
            8/4.7/0.6,
            9/4.7/-0.6
        }{
            \node [coordinate] (n\i) at (\x,\y) {\i};
        }

        \foreach \i in {1,...,9} {
            \fill (n\i) circle (1pt);
            \fill [orange,opacity=0.3] (n\i) circle (1.4142135623731);
            %\draw [red] (n\i) circle (1);
            %\draw [green] (n\i) circle (3.1622776601684);
        }
    \end{tikzpicture}
\end{document}

我想要实现的目标是:

在此处输入图片描述

有人对做这样的事情有什么建议吗?

答案1

calc我认为除了使用库和曲线工具自己绘制\draw命令外,没有其他方法。这里我仅发布部分工作,您可以想象如何继续,这也取决于您希望曲线经过的位置。

在这里我刚刚使用了out intikz 文档(第 101 页):

[...] 如果将 (a) 写入 [out=135,in=45] (b),则路径上会添加一条曲线,该曲线以 135° 的角度从 a 处出发,以 45° 的角度到达 b 处。这是因为 in 和 out 选项会触发使用特殊路径来代替直线 [...]

\documentclass[border=5mm]{standalone}

    \usepackage{tikz}
    \usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}[scale=1]
        \def\radius{1.4142135623731}
        \def\posyA{1.7320508075689}
        \def\posyB{0}
        \def\posyC{0.6}

        \foreach [count=\i] \x/\y in {%
            1/\posyA,
            -1/\posyA,
            -2/\posyB,
            -1/-\posyA,
            1/-\posyA,
            2/\posyB,
            4/\posyB,
            4.7/\posyC,
            4.7/-\posyC}{%
                \node [coordinate] (n\i) at (\x,\y) {\i};
                \fill (n\i) circle (1pt);
                \fill [orange, opacity=0.3] (n\i) circle (\radius);
                }
        \draw[blue, thick] ($(n2) + (0, 1)$) to[out=180, in=180] ($(n4) - (.5, 1)$)
            to[out=0, in=250] ($(n5) + (1, -.5)$)
            to[out=0, in=250] ($(n5) + (1, -.5)$);
    \end{tikzpicture}
\end{document}

输出

输出

相关内容