在 Tikz 中绘制点对点通信模型

在 Tikz 中绘制点对点通信模型

我想在 Tikz 中绘制一幅说明点对点通信的图像。我以前曾根据以下方法相对轻松地绘制过流程图:简单流程图示例

这是我想在 Tikz 中重新创建的图像:

enter image description here

我的困难是:

1.我不得不用流程图中的云朵代替火柴人。(这不是什么大问题,我可以接受)

2.如果我想在客户端 A 和 B 之间绘制 2 个箭头(边),结果将是一条双向路径(一条线,两端都有箭头),而不是两个单独的箭头。我真的想保留两个单独的箭头。

任何帮助都将受到赞赏。

答案1

首先要说的是:

\documentclass[border=2mm]{standalone}
\usepackage{lmodern}
\usepackage{tikz}

\usetikzlibrary{shapes.misc,shapes.geometric,shapes.symbols,positioning,shadings}
\begin{document}
\begin{tikzpicture}[font=\sffamily\footnotesize,
    Kliens/.style={cloud, 
        cloud puffs=11, 
        cloud ignores aspect, 
        cloud puff arc=120,
        draw, 
        minimum width=35mm, 
        minimum height=20mm, 
        draw=blue!50, 
             top color= white, 
           bottom color= blue!15,
        align=center},
]

\node[Kliens] (K1) at (0,0) {Kliens A};
\node[Kliens, above right=2cm and 2cm of K1] (K2) {Kliens B};
\node[Kliens, below right=2cm and 2cm of K1] (K3) {Kliens C};

\draw[->] (K1.puff 1) -- (K2.puff 4) node[midway,above,sloped]{A input};
\draw[<-] (K1.puff 11) -- (K2.puff 5) node[midway,above,sloped]{B input};

\draw[->] (K1.puff 6) -- (K3.puff 4) node[midway,above,sloped]{A input};
\draw[<-] (K1.puff 7) -- (K3.puff 3) node[midway,above,sloped]{C input};

\draw[->] (K2.puff 6) -- (K3.puff 2) node[midway,above,sloped]{B input};
\draw[<-] (K2.puff 7) -- (K3.puff 1) node[midway,above,sloped]{C input};
\end{tikzpicture}
\end{document} 

enter image description here

答案2

我的主要问题是,如果我想让 tikz 画 2线之间节点A 和 B,tikz 总是会画出节点间最短的连接线,因此这些线会重叠。最后我懒得画火柴人了。

我必须定义节点之间的连接角度。

我的最终解决方案:

\begin{figure}[!htb]
\centering
\begin{tikzpicture}[node distance = 2cm, auto]
    % Place nodes
    \node [cloud, fill=red] (KliensA) {\textit{A} Kliens};
    \node [cloud, fill=green, right=5cm of KliensA] (KliensB) {\textit{B} Kliens};
    \node [cloud, fill=orange, below=5cm of KliensA] (KliensC) {\textit{C} Kliens};
    \node [cloud, fill=purple, below=5cm of KliensB] (KliensD) {\textit{D} Kliens};

    % Draw edges
    \path [line,red] (KliensA.60) --  node {A input} (KliensB.120);
    \path [line,red] (KliensA.210) --  node[midway,above,sloped]{A input} (KliensC.150);
    \path [line,red] (KliensA.0) --  node {A input} (KliensD.90);
    \path [line,green] (KliensB) --  node {B input} (KliensA);
    \path [line,green] (KliensB.270) --  node {B input} (KliensC.0);
    \path [line,green] (KliensB) --  node[midway,below,sloped] {B input} (KliensD);
    \path [line,orange] (KliensC) --  node[midway,below,sloped] {C input} (KliensA);
    \path [line,orange] (KliensC.90) --  node {C input} (KliensB.180);
    \path [line,orange] (KliensC) --  node {C input} (KliensD);
    \path [line,purple] (KliensD.180) --  node {D input} (KliensA.270);
    \path [line,purple] (KliensD.30) --  node[midway,above,sloped] {D input} (KliensB.330);
    \path [line,purple] (KliensD.240) --  node {D input} (KliensC.300);
\end{tikzpicture}
\caption {Kommunikáció peer-to-peer modell esetén.}
\label{Peer2PeerFigure}
\end{figure}

输出:

enter image description here

相关内容