Diagrama TikZ Simples - linha curva com vários controles

Diagrama TikZ Simples - linha curva com vários controles

Estou tentando desenhar o seguinte diagrama no TikZ:

Diagrama TikZ desejado

Escrevi o código a seguir, mas não tenho certeza de como fazer as duas linhas curvas para P1 e 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}

Eu tentei usar draw com controles, mas sem sucesso. Qualquer ajuda será apreciada!

Responder1

Uma opção poderia ser um curve throughcomando dehobbybiblioteca tikz.

Um exemplo que precisará ajustar curvas de acordo com seu gosto

\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}

insira a descrição da imagem aqui

informação relacionada