
Tenho uma figura que desejo obter girando um elemento. Eu posso conseguir qualquer um
(fonte:funkyimg. com)
pelo seguinte código:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};
\foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
\draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
\draw[->, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black]{$\vv{v}$};
\draw[->, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black]{$\vv{f_{ic}}$};
\end{scope} }
\end{tikzpicture}
\end{document}
Ou aquilo :
(fonte:funkyimg. com)
adicionando o comando de rotação em meu nó:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};
\foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
\draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
\draw[->, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black,rotate=\angle]{$\vv{v}$};
\draw[->, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black, rotate=\angle]{$\vv{f_{ic}}$};
\end{scope} }
\end{tikzpicture}
\end{document}
Eu gostaria de uma mistura dos dois, com a posição dos nós girada como no meu segundo exemplo, mas o texto dentro dele ainda na horizontal como no primeiro. Existe uma maneira de fazer isso?
O que eu gostaria (em uma configuração simplificada), o resultado desejado ficaria em vermelho:
(fonte:funkyimg. com)
Responder1
EDITAR
Acho que seria melhor usar coordenadas polares. Eu sou péssimo em usar controles, então as curvas não são o que você deseja, mas isso mostra a ideia:
Aqui está o código:
\documentclass[a4paper]{article}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};
\foreach \angle in {0,30,...,330} {
\draw[->] (\angle:1) .. controls (\angle:2.2) and (\angle-20:2.7) .. (\angle-30:3);
\draw[->, Aquamarine!50!black] (\angle:1)--(\angle:2.5);
\node at (\angle:2.65) [Aquamarine!50!black]{$\vv{v}$};
\draw[->, Orchid!50!black] (\angle:1.5)--(\angle-20:1.5);
\node at (\angle-22:1.8)[Orchid!50!black]{$\scriptstyle\vv{f_{ic}}$};
}
\end{tikzpicture}
\end{document}
Em particular, os rótulos são locais que utilizam coordenadas polares nos locais "corretos". Observe que isso tikz
é muito inteligente e permite fazer coisas como (\angle-20:1)
alterar o ângulo na coordenada polar. A outra pequena melhoria no seu código é que o \foreach
loop pode interpolar todos os ângulos {0,30,...,330}
para que você não precise digitá-los todos.
--postagem original--
Colocar rotate
dentro do \draw
comando em vez de indei \node
parece funcionar:
Aqui está seu MWE modificado:
\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{esvect}
\usepackage[usenames,svgnames]{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm) node{HP};
\foreach \angle in {0,30,60,90,120,150,180,210,240,270,300,330} {\begin{scope}[rotate=\angle]
\draw[->] (0,1) .. controls +(0,1) and +(-1,-0.5) .. (1.5,3);
\draw[->,rotate=\angle, Aquamarine!50!black] (0,1)--(0,2.5)node[above,Aquamarine!50!black]{$\vv{v}$};
\draw[->, rotate=\angle, Orchid!50!black] (0,1.5)--(0.6,1.5)node[pos=0.5, above,Orchid!50!black]{$\vv{f_{ic}}$};
\end{scope} }
\end{tikzpicture}
\end{document}