我正在尝试在 TikZ 中绘制下图:
我编写了以下代码,但我不确定如何为 P1 和 P3 绘制两条曲线:
\documentclass[11pt,a4paper]{report}
\usepackage[USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
\title{Test}
\author{Thomas Offer}
\date{\today}
\begin{figure}[h!]
\centering
\begin{tikzpicture}[scale=1,thick,main node/.style={rectangle,draw,minimum width=2cm,minimum height=2cm}]
\node[main node,label=below:$M_1$] (M1) at (3,2) {};
\node[main node,label=below:$M_2$] (M2) at (7,2) {};
\node[main node,label=below:$M_3$] (M3) at (11,2) {};
\draw[->] (0,2) node[left] {$P_2$} -- (14,2);
\end{tikzpicture}
\caption{Tikz test picture}
\end{figure}
\end{document}
我尝试使用带控件的绘制,但无济于事。任何帮助都值得感激!
答案1
一个选项可能是curve through
来自hobby
tikzlibrary。
需要根据你的喜好调整曲线的示例
\documentclass[11pt,a4paper]{report}
\usepackage[USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds,hobby}
\begin{document}
\title{Test}
\author{Thomas Offer}
\date{\today}
\begin{figure}[h!]
\centering
\begin{tikzpicture}[scale=1,thick,main node/.style={rectangle,draw,minimum width=2cm,minimum height=2cm}]
\node[main node,label=below:$M_1$] (M1) at (3,2) {};
\node[main node,label=below:$M_2$] (M2) at (7,2) {};
\node[main node,label=below:$M_3$] (M3) at (11,2) {};
\draw[->] (0,2) node[left] (P2) {$P_2$} -- (14,2);
\node[below=2cm of P2] (P3){$P3$};
\node[above=2cm of M1] (P1){$P1$};
\path (P1-|M3.north east)--++(0:2cm) coordinate (aux);
\draw[->] (P3.north) to[curve through={ ([xshift=-5mm]M1.210)..([xshift=5mm]M1.-20) ..([xshift=5mm]M2.200) ([xshift=5mm]M2.-30)}] (P3-|M3.south west);
\draw[->] (P1.south) to[curve through={ ([xshift=-5mm]M2.150)..([xshift=5mm]M2.20) ..([xshift=5mm]M3.160) ([xshift=5mm]M3.30)}] (aux);
\end{tikzpicture}
\caption{Tikz test picture}
\end{figure}
\end{document}