我正在尝试说明域内的传感器网络。这是我现在所拥有的:
下面是我用来生成该代码的代码:
\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
in
了tikz 文档(第 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}