Tikz: 다중 입력 다중 출력 다이어그램에서 입력 및 출력 노드 정렬

Tikz: 다중 입력 다중 출력 다이어그램에서 입력 및 출력 노드 정렬

다음 구조를 사용하는 코드를 사용하여 다중 입력 다중 출력 스타일 다이어그램을 그리려고 합니다.

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

다음 다이어그램이 생성됩니다. 여기에 이미지 설명을 입력하세요

제가 알고 싶은 것은 '다중 입력 다중 출력 프로세스'가 선을 양분하여 두 부분으로 분할되도록 화살표를 그리는 방법입니다. 그래서 하나의 화살표가 왼쪽(노드 A에서) 프로세스로 들어가게 됩니다. 예를 들어) 하나는 오른쪽으로 나가고(예를 들어 노드 B로).

나는 선의 진입/종료를 노드로 설정하는 표기법을 알고 있습니다(name_of_node.180과 같은 것, 여기서 180은 노드 중심을 기준으로 노드에 대한 진입/종료 각도를 지정합니다). 예를 들어 여기블록 다이어그램 다중 입력 - TikZ의 다중 출력 구성 요소

그러나 '프로세스' 노드의 화살표의 진입점과 종료점을 노드 쌍(A와 B 또는 C와 D)과 '레벨'로 강제하는 것이 가능합니다. (사실상 아래 다이어그램에서는 앞서 언급한 것처럼 프로세스 노드가 화살표를 두 개로 분할하여 양분하는 것과 같습니다.)

답변1

수직 좌표계를 사용할 수 있습니다.

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

여기에 이미지 설명을 입력하세요

더 나은 대안은 다음을 사용하는 것입니다.

\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);

관련 정보