7

I have two coordinate frames which have an offset and rotation between them.

Using the following example I tried to visualized it:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}[thick]
    \draw[-latex] (0,0) -- (4,0)  node[right, text width=5em] {$X$};
    \draw[-latex] (0,0) -- (0,4)  node[right, text width=5em] {$Y$};

    \begin{scope}[rotate=0,draw=red]
        \draw[->] (3,2) -- (7,2)  node[right, text width=5em] {$X'$};
        \draw[->] (3,2) -- (3,6)  node[right, text width=5em] {$Y'$};
    \end{scope}

    \draw[->, postaction={decorate, decoration={text along path, text align={center},text={${\overrightarrow{R}}{\;}$}}}] (0,0) -- (3,2)  node[right, text width=5em] () {};

\end{tikzpicture}

\end{document}

rotate_0

once i change

\begin{scope}[rotate=0,draw=red]

to

\begin{scope}[rotate=20,draw=red]

I get: rotate_20

How could I place the origin of my X'Y' coordinate frame at position (3,2) in my XY coordinate system?

In addition I would like to place $\overrightarrow{R}$ a bit higher. How could I place it above the vector?

Bernard
  • 271,350
Eagle
  • 2,559
  • @koleygr, you are right. I haven't seen that question. In my question I ask in addition about the position of $\overrightarrow{R}$ – Eagle Feb 10 '18 at 13:58
  • I have answered in the comment for this... You will find out there that the rotation of a node doesn't follow the rule that caused the previous problem to your figure (It rotates around the node's center and not around (0,0) by fefault) – koleygr Feb 10 '18 at 14:01

1 Answers1

8

Rotate, is using by default the point (0,0): See here the orange arrow that is the arrow R rotated by 20 degrees:

enter image description here

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}[thick]
    \draw[-latex] (0,0) -- (4,0)  node[right, text width=5em] {$X$};
    \draw[-latex] (0,0) -- (0,4)  node[right, text width=5em] {$Y$};

    \begin{scope}[rotate=20,draw=red]
        \draw[->] (3,2) -- (7,2)  node[right, text width=5em] {$X'$};
        \draw[->] (3,2) -- (3,6)  node[right, text width=5em] {$Y'$};
    \end{scope}
    \begin{scope}
      \draw[->,orange,rotate=20] (0,0)--(3,2);
    \end{scope}

    \draw[->, postaction={decorate, decoration={text along path, text align={center},text={${\overrightarrow{R}}{\;}$}}}] (0,0) -- (3,2)  node[right, text width=5em] () {};

\end{tikzpicture}

\end{document}

So you have to change the default point (the center of the ratation) and this can be done with the command: rotate around like:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}[thick]
    \draw[-latex] (0,0) -- (4,0)  node[right, text width=5em] {$X$};
    \draw[-latex] (0,0) -- (0,4)  node[right, text width=5em] {$Y$};

    \begin{scope}[rotate around={20:(3,2)},draw=red]
        \draw[->] (3,2) -- (7,2)  node[right, text width=5em] {$X'$};
        \draw[->] (3,2) -- (3,6)  node[right, text width=5em] {$Y'$};
    \end{scope}

    \draw[->, postaction={decorate, decoration={text along path, text align={center},text={${\overrightarrow{R}}{\;}$}}}] (0,0) -- (3,2)  node[right, text width=5em] () {};

\end{tikzpicture}

\end{document}

enter image description here

koleygr
  • 20,105