
Estou tentando traçar um caminho no tikz, usando a solução de Paul Gaborit aquiTikZ: Como desenhar uma seta no meio da linha?Consegui chegar nisso, onde o caminho seria a metade do annulus.
Mas quero que a seta inferior esquerda e a seta interna do semicírculo vão para a direita (para que todas as setas tenham a mesma direção ao percorrer o caminho e tenham o interior do anel à esquerda).
Minha pobre edição no paint
E o código que estou usando
\usepackage{tikz}
\usetikzlibrary{positioning, calc, arrows, decorations.markings, decorations.pathreplacing}
\tikzset{
% style to apply some styles to each segment of a path
on each segment/.style={
decorate,
decoration={
show path construction,
moveto code={},
lineto code={
\path [#1]
(\tikzinputsegmentfirst) -- (\tikzinputsegmentlast);
},
curveto code={
\path [#1] (\tikzinputsegmentfirst)
.. controls
(\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb)
..
(\tikzinputsegmentlast);
},
closepath code={
\path [#1]
(\tikzinputsegmentfirst) -- (\tikzinputsegmentlast);
},
},
},
% style to add an arrow in the middle of a path
mid arrow/.style={postaction={decorate,decoration={
markings,
mark=at position .5 with {\arrow[#1]{stealth}}
}}},
}
\begin{center}
\begin{tikzpicture}[domain=0:4]
\draw [<->, very thick] (0,4) node (yaxis) [above] {$y$}
|- (-4,0) node (zaxis) [left] {}
|- (4,0) node (xaxis) [right] {$x$}
;
\path [draw=black, ultra thick, postaction={on each segment={mid arrow=black}}] (3,0) arc (0:180:3cm)
(1,0) -> (3,0)
(1,0) arc (0:180:1cm)
(-1,0) -> (-3,0) ;
\end{tikzpicture}
\end{center}
Qualquer ajuda seria apreciada :)
Responder1
No futuro, considere postar um relatório completoexemplo de trabalho mínimo (MWE). Isso torna mais fácil para outras pessoas começarem a ajudá-lo. :-)
O código de Paul Gaborit aplica as setas na direção em que o caminho é percorrido. Portanto, neste caso, tudo o que é necessário é mudar a direção dos segmentos do caminho incorretos.
Só tive que alterar duas linhas de código dentro do tikzpicture
ambiente; ambas as alterações são detalhadas nas linhas de comentários no código abaixo.
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, calc, arrows, decorations.markings, decorations.pathreplacing}
\tikzset{
% style to apply some styles to each segment of a path
on each segment/.style={
decorate,
decoration={
show path construction,
moveto code={},
lineto code={
\path [#1]
(\tikzinputsegmentfirst) -- (\tikzinputsegmentlast);
},
curveto code={
\path [#1] (\tikzinputsegmentfirst)
.. controls
(\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb)
..
(\tikzinputsegmentlast);
},
closepath code={
\path [#1]
(\tikzinputsegmentfirst) -- (\tikzinputsegmentlast);
},
},
},
% style to add an arrow in the middle of a path
mid arrow/.style={postaction={decorate,decoration={
markings,
mark=at position .5 with {\arrow[#1]{stealth}}
}}},
}
\begin{document}
\begin{tikzpicture}[domain=0:4]
\draw [<->, very thick] (0,4) node (yaxis) [above] {$y$}
|- (-4,0) node (zaxis) [left] {}
|- (4,0) node (xaxis) [right] {$x$}
;
\path [draw=black, ultra thick, postaction={on each segment={mid arrow=black}}] (3,0) arc (0:180:3cm)
(1,0) -> (3,0)
(-1,0) arc (180:0:1cm) % changed starting point and swapped arc bounding angles
(-3,0) -> (-1,0) ; % swapped coordinates here
\end{tikzpicture}
\end{document}