3

I am trying to change the label position of Q node indicating the angle, but it seems that does not work, only for default position (0 for right, 45 for above right, etc.). Thank you for your help.

Here is my code

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,decorations,babel,positioning}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}[>=stealth, axis/.style={-, black}, vector/.style={-{Stealth[length=8,width=3.5]}, thick, black}] 

\draw (0, 0) circle (2cm);
\draw (0, 0) node[below]{$ O $};
\draw (0, 0) -- (-.65, 1.891);
\draw (-.65, 1.891) node[circle,fill,inner sep=0.7pt,label=above:$ P $](){};
\draw (0, 0) -- (.65, 1.891);
\draw (.65, 1.891) node[circle,fill,inner sep=0.7pt,label={50:$ Q $}](){};
\draw [black]([shift=(71.03:.5cm)]0,0) arc (71.03:108.969:.5cm);
\draw [color=black](0,0)+(90:0.85) node[rotate=0] {$ \Delta \theta $};
\draw [vector] (-.65, 1.891) -- (1,2.458) node[above]{$ \vec{ v } _{ 1 } $};
\draw [-{Stealth[length=8,width=3.5]}, thick, black,dashed] (.65, 1.891) -- (2.3,2.458);
\draw (2.3,2.458) node[above]{$ R $};   
\draw (2.3,2.458) -- (2.8,2.63);
\draw [vector] (.65, 1.891) -- (2.3,1.324) node[below left]{$ \vec{ v } _{ 2 } $};
\draw [vector] (2.3,2.458) -- (2.3,1.324) node[above right]{$ \Delta \vec{ v } $};
\draw [black]([shift=(-18.970:.5cm)].65, 1.891) arc (-18.970:18.970:.5cm);
\draw [color=black](.65, 1.891)+(0:0.85) node[rotate=0] {$ \Delta \theta $};
\draw [black]([shift=(-90:.25cm)]2.3,2.458) arc (-90:18.970:.25cm);
\draw [color=black](2.3,2.458)+(-15:0.5) node[rotate=0] {$ \beta $};
\draw (2.3,1.324) node[below right]{$ S $}; 

\end{tikzpicture}

And the result:

Result

5

It is not clear what you are asking because it isn't clear where you expect the Q the end up.

Basically, you've said to proceed to the point at (.65,1.891) and make a circular node there with radius of 0.7pt. Then, move to the point that is at an angle of 50 degrees from that node's centre, on the border of the node and put another node there such that it 'faces outwards' from the centre of the first node. However, the anchor chosen will snap to a compass point if close enough, so it is going to draw the node with the south west anchor at the current point.

If we draw this out in colour, we can see that this is, indeed, where the label Q is drawn.

node locations

The red lines correspond to the border of the node containing Q. The red dot is the main node. And the small blue circle is the point where the Q node is anchored. Basically, I changed the node label line to

  \node (node) [circle, fill, inner sep=.7pt, red] at (.65,1.891) {};

and added

  \node (node) [circle, fill, inner sep=.7pt, red] at (.65,1.891) {};
  \draw [ultra thin, blue] (node.50) ++(50:.7pt) ++(50:-.2pt)  circle (.4pt);

at the end of the code.

Now I assume you want the label somewhere else, but I don't know where.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[>=stealth, axis/.style={-, black}, vector/.style={-{Stealth[length=8,width=3.5]}, thick, black}]
  \draw (0, 0) circle (2cm);
  \draw (0, 0) node[below]{$ O $};
  \draw (0, 0) -- (-.65, 1.891);
  \draw (-.65, 1.891) node[circle,fill,inner sep=0.7pt,label=above:$ P $](){};
  \draw (0, 0) -- (.65, 1.891);
  \draw (.65, 1.891) node[circle,fill,inner sep=0.7pt,label={[draw=red]50:$ Q $}](){};
  \draw [black]([shift=(71.03:.5cm)]0,0) arc (71.03:108.969:.5cm);
  \draw [color=black](0,0)+(90:0.85) node[rotate=0] {$ \Delta \theta $};
  \draw [vector] (-.65, 1.891) -- (1,2.458) node[above]{$ \vec{ v } _{ 1 } $};
  \draw [-{Stealth[length=8,width=3.5]}, thick, black,dashed] (.65, 1.891) -- (2.3,2.458);
  \draw (2.3,2.458) node[above]{$ R $};
  \draw (2.3,2.458) -- (2.8,2.63);
  \draw [vector] (.65, 1.891) -- (2.3,1.324) node[below left]{$ \vec{ v } _{ 2 } $};
  \draw [vector] (2.3,2.458) -- (2.3,1.324) node[above right]{$ \Delta \vec{ v } $};
  \draw [black]([shift=(-18.970:.5cm)].65, 1.891) arc (-18.970:18.970:.5cm);
  \draw [color=black](.65, 1.891)+(0:0.85) node[rotate=0] {$ \Delta \theta $};
  \draw [black]([shift=(-90:.25cm)]2.3,2.458) arc (-90:18.970:.25cm);
  \draw [color=black](2.3,2.458)+(-15:0.5) node[rotate=0] {$ \beta $};
  \draw (2.3,1.324) node[below right]{$ S $};
  \node (node) [circle, fill, inner sep=.7pt, red] at (.65,1.891) {};
  \draw [ultra thin, blue] (node.50) ++(50:.7pt) ++(50:-.2pt)  circle (.4pt);
\end{tikzpicture}
\end{document}

EDIT

If you would explain what you expect, it would be possible (probably) to explain how to achieve it. But in response to repeated assertions that it doesn't work, I can only repeat that it does exactly what it says on the tin.

Suppose we draw the recalcitrant node not once, but three times: at 40, 50 and 60 degrees. We draw a semi-transparent border in a different colour around each one, to obtain a layered effect.

Now, if the change in angle made no difference, the nodes would be in exactly the same place. However, they are not. The node is shifted by 10 degrees each time, as expected.

  \draw (.65, 1.891) node[circle,fill,inner sep=0.7pt,label={[draw=blue, draw opacity=.5]60:$ Q $}](){};
  \draw (.65, 1.891) node[circle,fill,inner sep=0.7pt,label={[draw=magenta, draw opacity=.5]40:$ Q $}](){};
  \draw (.65, 1.891) node[circle,fill,inner sep=0.7pt,label={[draw=green, draw opacity=.5]50:$ Q $}](){};

layered nodes

You can also see that the Q is included three times, shifted slightly in each case.

What does not change is the label node's anchor. In each case, the label is anchored at south west.

If, however, we use an angle such as 0, then the anchor used will be west. If we use 90, the anchor used will be south. Hence, the label node will shift considerably more if the angle is changed from 0 to 45 or 45 to 90 than would be explained solely by the change in the point at which the label node is anchored. The change of the anchor used to place the node increases the effect of the change in the point at which the node is anchored.

This is especially true for a very small node, like this 1.4pt diameter one, because the point on its border when a line is drawn from its centre at 40 degrees is very, very close to the point on its border when a line is drawn at 60 degrees. Put simply, all points on the border of such a node are very close together, because the node is very small and its border is, therefore, very short.

If you were applying a label to a larger node, the effect would be significantly more dramatic. If we change the node's diameter from 0.7pt to 70pt, then the effect can be seen quite clearly.

changes in angle of label for much larger node

  • Thank you for your time. I want to modify the position of the label of the node Q. I used label=<angle>:<label text> , in my case node[label={50:$ Q $}], instead of node[above]{$ Q $} like in the others nodes, but it seems that does not work. If you set the angle on 50 or 60 or 40, it does not change. It only change when you set the angle on 0 (that is the position right), or 45 (that is the position above right) or 90 (that is the position above), etc. Sorry if I was not clear enough in my post. Greetings from Peru. – Imhotep Feb 22 '17 at 4:46
  • @Imhotep It does work. It does exactly what it says. Please see edit above. You obviously expect something other than what is to be expected, given how labels are placed. But since you won't say where you actually want the label, I can only repeat that changing the angle indeed changes the location of the label. However, your node is tiny, so this in itself makes little difference, as illustrated above. – cfr Feb 22 '17 at 23:31

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.