angles in a vector diagram

I have a code to draw a simple vector diagram with tikZ

\documentclass[tikz, border=3mm]{standalone}
\usepackage{amsmath, amssymb}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (1,1);
\coordinate (v3) at (0,2.5);

\draw[->] (v1) -- node[right] {$\vec{a}$} (v2);
\draw[->] (v2) -- node[right] {$\vec{b}$} (v3);
\draw[->] (v1) -- node[left] {$\vec{c}$} (v3);

\end{tikzpicture}
\end{document}


In addition I would like to draw the angle between vectors a and b. This requires 1) extending the line of vector a a bit 2) drawing the arc corresponding to the angle 3) placing the angle label

The final output should be the following:

What additions to the code are required?

You can use the calc library to calculate a new coordinate at the extension of the v1--v2 line, and then use the angles library as described in one of the questions mentioned by samcarter.

\documentclass[tikz, border=3mm]{standalone}
\usepackage{amsmath, amssymb}
\usetikzlibrary{calc,angles,quotes}

\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (1,1);
\coordinate (v3) at (0,2.5);
% add coordinate at the extension of the line from v1 to v2
\coordinate (v2-2) at ($(v1)!1.2!(v2)$);

\draw[->] (v1) -- node[right] {$\vec{a}$} (v2);
\draw[->] (v2) -- node[right] {$\vec{b}$} (v3);
\draw[->] (v1) -- node[left] {$\vec{c}$} (v3);

% draw line and angle
\draw [very thin] (v2) -- (v2-2)
pic [draw,angle radius=2mm,angle eccentricity=1.7, "$\theta$" font=\scriptsize] {angle=v2-2--v2--v3};

\end{tikzpicture}
\end{document}


• I get the following error when compiling the code: – Viesturs May 29 '17 at 18:05
• ! Missing \endcsname inserted. <to be read again> \theta l.19 ...icity=1.7, $\theta$'', font=\scriptsize] {angle=v2-2--v2--v3}; – Viesturs May 29 '17 at 18:05
• @Viesturs You're not using the same code. You should have " (the single character) at both sides of the \theta, while you have two backticks before it and two ' after it. – Torbjørn T. May 29 '17 at 18:13
• Perhaps your editor autocorrected the quote marks to proper LaTeX quotes, but that is not what you want here. See e.g. tex.stackexchange.com/a/175971/586 – Torbjørn T. May 29 '17 at 18:14
• @Viesturs "$\theta$"{xshift=1mm, yshift=1mm font=\scriptsize} – Torbjørn T. Oct 28 '17 at 17:49

You can get the angle of a line using \pgfmathanglebetweenpoints.

\documentclass[tikz, border=3mm]{standalone}
\usepackage{amsmath, amssymb}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (1,1);
\coordinate (v3) at (0,2.5);

\pgfmathanglebetweenpoints{\pgfpointanchor{v1}{center}}{\pgfpointanchor{v2}{center}}
\edef\angA{\pgfmathresult}
\pgfmathanglebetweenpoints{\pgfpointanchor{v2}{center}}{\pgfpointanchor{v3}{center}}
\edef\angB{\pgfmathresult}

\draw[->] (v1) -- node[right] {$\vec{a}$} (v2);
\draw[->] (v2) -- node[right] {$\vec{b}$} (v3);
\draw[->] (v1) -- node[left] {$\vec{c}$} (v3);

\draw[very thin] (v2)-- +(\angA:0.5);
\draw[very thin] (v2) +(\angA:0.25) arc (\angA:\angB:0.25) node[pos=0.5,above=-1pt]{\footnotesize$\theta$};
\end{tikzpicture}
\end{document}