I have some problems bending the edges of my grap properly.
I want to draw a flow network, so far I have done the following:
What I would like to have is that the edges going out from the Source node (S) stay in the height of that node as long as possible, until they bend to go to the corresponding node in the lower layer. Seen from the top-view the edges should be a straight line. Furthermore, they should enter the nodes of the middle layer vertically.
For example consider the nodes at the very left of the middle layer: The edges do not reach the node at the north anchor but at bit shifted to the left. So I want the edges connect these nodes at the north anchor with the arrow tip oriented vertically, showing at the bottom.
Attached is the code used to produce this graph.
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{shapes,fit,calc,positioning} %use shapes library if you need ellipse
\usetikzlibrary{arrows}
\usepackage[english]{babel} % The dictionary for hyphenation
\usepackage[utf8]{inputenc} % input-encoding
\usepackage[T1]{fontenc} % Schriftfamilie T1 ermöglicht Trennung und
% Suche von Wörtern mit Umlauten.
\definecolor{linkNode_color}{RGB}{60,60,60}
\definecolor{detNode_color}{RGB}{60,60,60}
\definecolor{sourceNode_color}{RGB}{60,60,60}
\newcommand{\myGlobalTransformation}[2]
{
\pgftransformcm{1}{0}{0.4}{0.5}{\pgfpoint{#1cm}{#2cm}}
}
% draw a 4x4 helper grid in 3D
% Input: point of origins x and y coordinate and additional drawing-parameters
\newcommand{\gridThreeD}[3]
{
\begin{scope}
\myGlobalTransformation{#1}{#2};
\draw [#3,step=1.5cm] grid (10.5,10.5);
\end{scope}
}
\begin{document}
\newlength{\sizeCircle}
\setlength{\sizeCircle}{0.2cm}
\def \NodeDistance{4}
\tikzstyle{linkNode}=[draw,circle,fill=linkNode_color,inner sep=0pt,minimum size=\sizeCircle]
\tikzstyle{detNode}=[draw,circle,fill=detNode_color,inner sep=0pt,minimum size=\sizeCircle]
\tikzstyle{sourceNode}=[draw,circle,fill=sourceNode_color,inner sep=0pt,minimum size=\sizeCircle]
\tikzstyle{linkEdge}=[->,>=stealth',black,thick]
\tikzstyle{sourceEdge}=[->,>=stealth',black,thick]
\tikzstyle{detEdge}=[->,>=stealth',black,thick]
\begin{tikzpicture}
\begin{scope}[scale=0.2]
\gridThreeD{0}{9}{black!50};
\gridThreeD{0}{-5}{black!50};
\begin{scope}
\myGlobalTransformation{0}{5}
\node[linkNode] (link_1_1) at (0,0) {};
\node[linkNode] (link_1_2) at (0,2) {};
\node[linkNode] (link_2_1) at (2*\NodeDistance,0) {};
\node[linkNode] (link_2_2) at (2*\NodeDistance,2) {};
\node[linkNode] (link_3_1) at (4*\NodeDistance,0) {};
\node[linkNode] (link_3_2) at (4*\NodeDistance,2) {};
\node[detNode] (det_1_1) at (1*\NodeDistance,0) {};
\node[detNode] (det_1_2) at (1*\NodeDistance,2) {};
\node[detNode] (det_2_1) at (3*\NodeDistance,0) {};
\node[detNode] (det_2_2) at (3*\NodeDistance,2) {};
\node[detNode] (det_3_1) at (5*\NodeDistance,0) {};
\node[detNode] (det_3_2) at (5*\NodeDistance,2) {};
\draw[linkEdge] (det_1_1) -- (link_2_1);
\draw[linkEdge] (det_1_1) -- (link_2_2);
\draw[linkEdge] (det_1_2) -- (link_2_1);
\draw[linkEdge] (det_1_2) -- (link_2_2);
\draw[linkEdge] (det_1_1) to[out=300, in=270, looseness=1] (link_3_1);
\draw[linkEdge] (det_1_2) to[out=120, in=120, looseness=1] (link_3_2);
\draw[linkEdge] (det_2_1) -- (link_3_1);
\draw[linkEdge] (det_2_2) -- (link_3_1);
\draw[linkEdge] (det_2_1) -- (link_3_2);
\draw[linkEdge] (det_2_2) -- (link_3_2);
\draw[detEdge] (link_1_1) -- (det_1_1);
\draw[detEdge] (link_1_2) -- (det_1_2);
\draw[detEdge] (link_2_2) -- (det_2_2);
\draw[detEdge] (link_3_1) -- (det_3_1);
\draw[detEdge] (link_3_2) -- (det_3_2);
\draw[detEdge] (link_2_1) -- (det_2_1);
\end{scope}
\begin{scope}
\myGlobalTransformation{0}{9}
\node[sourceNode] (source) at (4,4) {S};
\draw[sourceEdge] (source.west) to[out=180, in=120,looseness=2] (link_1_1);
\draw[sourceEdge] (source.west) to[out=180, in=120,looseness=2] (link_1_2);
\draw[sourceEdge] (source.south) to[out=180, in=120,looseness=1] (link_2_1);
\draw[sourceEdge] (source.south) to[out=180, in=120,looseness=1] (link_2_2);
\draw[sourceEdge] (source.east) to[out=0, in=110,looseness=1] (link_3_1.north);
\draw[sourceEdge] (source.east) to[out=0, in=110,looseness=1] (link_3_2.north);
\pgftransformreset
\end{scope}
\begin{scope}
\myGlobalTransformation{0}{-5}
\node[sourceNode] (sink) at (6,10) {T};
\draw[sourceEdge] (det_1_1.south) to[out=270, in=180,looseness=1] (sink.west);
\draw[sourceEdge] (det_1_2.south) to[out=270, in=180,looseness=1] (sink.west);
\draw[sourceEdge] (det_2_1.south) to[out=270, in=0,looseness=1] (sink.east);
\draw[sourceEdge] (det_2_2.south) to[out=270, in=0,looseness=1] (sink.east);
\draw[sourceEdge] (det_3_1.south) to[out=270, in=0,looseness=1] (sink.east);
\draw[sourceEdge] (det_3_2.south) to[out=270, in=0,looseness=1] (sink.east);
\end{scope}
\begin{scope}
\myGlobalTransformation{0}{5}
\node[linkNode] (link_1_1) at (0,0) {};
\node[linkNode] (link_1_2) at (0,2) {};
\node[linkNode] (link_2_1) at (2*\NodeDistance,0) {};
\node[linkNode] (link_2_2) at (2*\NodeDistance,2) {};
\node[linkNode] (link_3_1) at (4*\NodeDistance,0) {};
\node[linkNode] (link_3_2) at (4*\NodeDistance,2) {};
\node[detNode] (det_1_1) at (1*\NodeDistance,0) {};
\node[detNode] (det_1_2) at (1*\NodeDistance,2) {};
\node[detNode] (det_2_1) at (3*\NodeDistance,0) {};
\node[detNode] (det_2_2) at (3*\NodeDistance,2) {};
\node[detNode] (det_3_1) at (5*\NodeDistance,0) {};
\node[detNode] (det_3_2) at (5*\NodeDistance,2) {};
\end{scope}
\end{scope}
\end{tikzpicture}
\end{document}