Here three solutions.
With Tikz we have several problems. First we need to use some angles to draw arcs and it's not easy if you don't know some mathematics notions like asin and atan2, then there is the problem to draw arrow at specific places.
The first solutions are based on tkz-euclide. The problem with tkz-eucide is the syntax base on pst-eucl and latex. I understand that a lot of users prefer to use only tikz. The main problem is that tkz-euclide is not very flexible and it's not easy to extend the commands. The last point is the notion of path, we can't use this notion as in tikz.
A fine solution is the last one based only on tikz.
It's possible to use tkz-euclide. The solution uses the same way as pst-eucl, because we can draw an arc from one point in the direction of another point. We don't need to calculate angles
1) I define four points B, C and D,E and I draw the arc with center O from B to C and from D to E.
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-5,ymin=-5,xmax=5,ymax=5]
\tkzDrawXY[noticks]
\tkzDefPoint(0,0){O}
\tkzDefPoint(.5,.2){B} \tkzDefPoint(.5,-.2){C}
\tkzDefPoint(4,.2){D} \tkzDefPoint(4,-.2){E}
\tkzDrawArc[color=red,line width=1pt](O,B)(C)
\begin{scope}[decoration={markings,
mark=at position .5 with {\arrow[scale=2]{>}};}]
\tkzDrawSegments[postaction={decorate},color=red,line width=1pt](B,D E,C)
\end{scope}
\begin{scope}[decoration={markings,
mark=at position .20 with {\arrow[scale=2]{>}},
mark=at position .70 with {\arrow[scale=2]{>}};}]
\tkzDrawArc[postaction={decorate},color=red,line width=1pt](O,D)(E)
\end{scope}
\end{tikzpicture}
\end{document}

2) Always with tkz-euclide but I don't use here the decoration library because it's not easy to place the arrow. Here I draw paths with the option ->
. I need to cut some paths in small paths
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-5,ymin=-5,xmax=5,ymax=5]
\tkzDrawXY[noticks]
\tkzDefPoint(0,0){O}
\tkzDefPoint(3:4){D} \tkzDefPoint(90:4){M} \tkzDefPoint(270:4){N}
\tkzDefPoint(-3:4){E}
\tkzDefPoint[shift={(-3.5,0)}](3:4){B} \tkzDefMidPoint(B,D) \tkzGetPoint{B'}
\tkzDefPoint[shift={(-3.5,0)}](-3:4){C} \tkzDefMidPoint(C,E) \tkzGetPoint{C'}
\tkzDrawArc[color=red,line width=1pt](O,N)(E)
\tkzDrawArc[color=red,line width=1pt](O,B)(C)
\tikzset{compass style/.append style={->}}
\tkzDrawArc[color=red,line width=1pt](O,D)(M)
\tkzDrawArc[color=red,line width=1pt](O,M)(N)
\tkzDrawSegments[color=red,line width=1pt,->](D,B' C,C')
\tkzDrawSegments[color=red,line width=1pt](B',B C',E)
\end{tikzpicture}
\end{document}

3) The last solution is to use tikz and to define a new macro to get polar coordinates of the last point. I named this macro \pgfgetlastar
angle for a, and r for radius.
The code of the macro
\def\pgfgetlastar#1#2{%
\pgfmathparse{veclen(\pgf@x,\pgf@y)/28.45274}
\edef#1{\pgfmathresult}%
\pgfmathparse{atan2(\pgf@x,\pgf@y)}
\edef#2{\pgfmathresult}%
}%
With veclen
I get the length of OM if M is the last point used in the path and O the origin. atan2 gives the angle of OM with the horizontal axe.
Now the next code is to use the macro in the options of a path
\tikzset{
last polar/.code 2 args=
{\pgfgetlastar{#1}{#2} }
}
The macro in action : We draw an arc then a horizontal line. We determine the polar coordinates of the last point before to draw the last arc and the last line.
\begin{tikzpicture}[deco]
\draw[red,postaction=decorate]
(4:4 cm) arc (4:356:4 cm) -- +(-3,0) [last polar={\r}{\a}] arc (\a:-360-\a:\r) --cycle ;
\end{tikzpicture}
We only need to define the decoration :
The complete code :
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,arrows}
\makeatletter
\def\pgfgetlastar#1#2{%
\pgfmathparse{veclen(\pgf@x,\pgf@y)/28.45274}
\edef#1{\pgfmathresult}%
\pgfmathparse{atan2(\pgf@x,\pgf@y)}
\edef#2{\pgfmathresult}%
}%
\begin{document}
\tikzset{
last polar/.code 2 args=
{\pgfgetlastar{#1}{#2} }
}
\tikzset{deco/.style= {decoration={markings,
mark=at position .17 with {\arrow[scale=2]{>}},
mark=at position .51 with {\arrow[scale=2]{>}},
mark=at position .72 with {\arrow[scale=2]{>}},
mark=at position .95 with {\arrow[scale=2]{>}}
}}}
\begin{tikzpicture}[deco]
\draw[red,postaction=decorate]
(4:4 cm) arc (4:356:4 cm) -- +(-3,0) [last polar={\r}{\a}] arc (\a:-360-\a:\r) --cycle ;
\end{tikzpicture}
\end{document}

texdoc tikz
(or, if this shouldn't worktexdoc pgf
) into a text mode console window on your computer. Alternatively you can just take your favourite search engine to search forpgfmanual
. But be aware that you could get a version this way that won't fit the version installed in your TeX system.Windows+R
keys and in the window that is popping up, enter the commands. On a Linux desktopAlt+F2
should bring up a similar dialogue.