3

I have a figure, that I want to obtain by rotating an element. I can get either

http://funkyimg.com/i/2jGcg.png

by the following code :

\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}

Or that :

http://funkyimg.com/i/2jGci.png

with adding the rotate command in my node :

\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}

I would like a mix of the two, with the nodes position rotated as in my second example, but the text inside it still horizontal as in my first. Is there a way to do that ?

What I would like (in a simplified setting), the desired result would be in red :

http://funkyimg.com/i/2jGcW.png

3

EDIT

I think that you may be better off using polar coordinates. I am crap at using controls so the curves are not what you want but this shows the idea:

enter image description here

Here is the code:

\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}

In particular, the labels are places using polar coordinates at the "correct" places. Notice that tikz is really clever and lets you do things like (\angle-20:1) to change the angle in the polar coordinate. The other small improvement on your code is that the \foreach loop can interpolate all of the the angles from {0,30,...,330} so you don't nee to type them all out.

--original post--

Putting the rotate inside the \draw command rather than indei \node seems to do the trick:

enter image description here

Here's your modified MWE:

\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}
  • I am not sure how to correctly express what I would like. My 'ok' part would be the one withangle=0. But for instance for my angle=180 part, I would like my $v$ text to be under the arrow. I added a paint drawing to try to be more clear. In your instance, the nodes are not where I would like them to be, but the text rotation is fine. – Anthony Martin Nov 15 '16 at 10:10
  • @Aerandal I've added a second approach using polar coordinates. If I understand what you want it solves your problem in principle but the curves are wrong, which might be a problem. – Andrew Nov 15 '16 at 11:08
  • 1
    I used \draw[->, Orchid!50!black] (\angle:1.5)--([turn]270:0.6cm); to assure the orthogonality of my two arrows, but otherwise I managed to do what I wanted by tweaking a bit the values. The price of your solution is indeed that it is a bit more complex for the curves, but still manageable. Thx. – Anthony Martin Nov 15 '16 at 13:19
  • @Aerandal I didn't know about turn. Thanks! – Andrew Nov 15 '16 at 13:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.