How can I offset a hobby curve, so that the resulting curve serves as a shifted and parallel outline to the original curve? Here is what I got so far:
\documentclass[border=5pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,hobby}
\tikzset{
point/.style={circle,inner sep=0pt,minimum size=3pt,fill=red},
}
\begin{document}
\begin{tikzpicture}
\coordinate [label=below right:$A$] (A) at (0,0);
\coordinate [label=above right:$B$] (B) at (0,-5);
\coordinate [label=above left:$C$] (C) at (2.5,-3);
\coordinate [label=above left:$D$] (D) at (5,-2);
\coordinate [label=below left:$E$] (E) at (4.5,0);
\draw (A) -- (B);
\draw ([out angle=0]B) to [curve through ={(C)}] ([in angle=-135]D);
\draw (D) -- (E);
\draw (E) -- (A);
\draw[blue,dashed] (A) -- ([xshift=-.3cm]A);
\draw[blue,dashed] ([xshift=-.3cm]A) -- ([xshift=-.3cm]B);
\draw[blue,dashed] ([xshift=-.3cm]B) to[out=-90,in=180] ([yshift=-.3cm]B);
\draw[blue,dashed] ([out angle=0,yshift=-.3cm]B) to [curve through ={([yshift=-.3cm]C)}] ([in angle=-135,yshift=-.3cm]D);
\node[point] at (A) {};
\node[point] at (B) {};
\node[point] at (C) {};
\node[point] at (D) {};
\node[point] at (E) {};
\end{tikzpicture}
\end{document}
Which produces the following image:

As you can see, the blue-dashed line from A to B is 0.3cm apart from the original line. However, the blue-dashed curve does not maintain a constant distance from the original curve.
I tried the solution from JLDiaz in this post and that works perfectly, as long as you don't use hobby curves, because they don't seem to support the coordinate[pos=xxx] option that is used in the solution. Using regular curves instead of hobby curves is not an option for me, since the hobby curves produce a much nicer "flow".
I figure that shifting something around in parallel is such a common task, that there must be an easier way of doing it, right? Can anyone point me into the right direction?



