Tikz: Alinhando nós de entrada e saída em diagrama de múltiplas entradas e múltiplas saídas

Tikz: Alinhando nós de entrada e saída em diagrama de múltiplas entradas e múltiplas saídas

Estou tentando desenhar um diagrama de estilo de múltiplas entradas e múltiplas saídas, usando código que usa a seguinte estrutura:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}


\begin{document}

\begin{tikzpicture}
\tikzset{packet/.style={rectangle, draw, very thick, minimum size=8mm, rounded corners=1mm, fill=blue!50!white!30}}
\tikzset{mixing/.style={rectangle, draw, very thick, minimum width=35ex, rounded corners=1mm, fill=red!70!orange!30,rotate=90}}

\node[packet] (A) at (0,0) {Node A};
\node[packet] (B) [right=2cm of A] {Node B};
\node[mixing] (pro) at ($(A) !.5! (B) + (0.0,-1.0)$) {Multiple Input Multiple Output process};

\node[packet] (C) at (0.0,-2.1) {Node C};
\node[packet] (D) [right=2cm of C] {Node D};

\draw[->] (A.east) -- (B.west);
\draw[->] (C.east) -- (D.west);
\end{tikzpicture}
\end{document} 

que produz o seguinte diagrama: insira a descrição da imagem aqui

O que eu gostaria de saber é como desenhar as setas para que o 'processo de múltiplas entradas e múltiplas saídas' divida a linha ao meio para que ela seja dividida em duas partes, de modo que haja uma seta entrando no processo à esquerda (do nó A por exemplo) e uma saída pela direita (por exemplo para o nó B).

Estou ciente da notação que define a entrada/saída de uma linha em um nó (algo como name_of_node.180, onde 180 especifica o ângulo de entrada/saída do nó em relação ao centro do nó), por exemplo aquiDiagramas de blocos Multi entrada - Componentes multi saída em TikZ

No entanto, é possível forçar os pontos de entrada e saída das setas do nó 'processo' a estarem 'nivelados' com um par de nós (A e B, ou C e D). (Efetivamente, no diagrama abaixo é como se o nó do processo dividisse as setas ao meio, dividindo-as em duas, conforme mencionado anteriormente).

Responder1

Você pode usar o sistema de coordenadas perpendiculares:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}


\begin{document}

\begin{tikzpicture}
\tikzset{packet/.style={rectangle, draw, very thick, minimum size=8mm, rounded corners=1mm, fill=blue!50!white!30}}
\tikzset{mixing/.style={rectangle, draw, very thick, minimum width=35ex, rounded corners=1mm, fill=red!70!orange!30,rotate=90}}

\node[packet] (A) at (0,0) {Node A};
\node[packet] (B) [right=2cm of A] {Node B};
\node[mixing] (pro) at ($(A) !.5! (B) + (0.0,-1.0)$) 
  (mult) {Multiple Input Multiple Output process};

\node[packet] (C) at (0.0,-2.1) {Node C};
\node[packet] (D) [right=2cm of C] {Node D};

\draw[->] (A.east) -- (mult.north|-A.east);
\draw[->] (mult.south|-A.east) -- (B.west);
\draw[->] (C.east) -- (mult.north|-C.east);
\draw[->] (mult.south|-C.east) -- (D.west);
\end{tikzpicture}
\end{document} 

insira a descrição da imagem aqui

Uma alternativa melhor é usar:

\draw[->] (A.east) -- (mult.north|-A.east);
\draw[->] (mult.south|-A.east) -- (B.west|-A.east);
\draw[->] (C.east) -- (mult.north|-C.east);
\draw[->] (mult.south|-C.east) -- (D.west|-C.east);

informação relacionada