Начертить угол между двумя векторами?

Начертить угол между двумя векторами?

Я хочу нарисовать угол между двумя векторами:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel,plotmarks}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}[decoration=brace]


% orthogonal ground line
\draw[thick] (-3,0) -- (3,0);

% Origin
\draw[fill=black] (0,0) node(O)[anchor=north] {$O$};

% vector a
\draw[thick,->] (0,0) -- (-2,2) node(a)[anchor=north east] {$a$};

% vector b
\draw[thick,->] (0,0) -- (2.5,1.5) node(b)[anchor=west] {$b$};


\pic [draw, -, angle eccentricity=1.2, angle radius=1cm,, "$\gamma$"] {angle=b--O--a};

\end{tikzpicture}
\end{document}

По каким-то причинам угол получился намного больше ожидаемого?

введите описание изображения здесь

Есть ли у вас какие-нибудь советы, как это сделать правильно?

решение1

Причина этого в том, что вы неправильно определяете координаты для угла. Если вы пишете \draw (0,0) -- (-2,2) node (a) [anchor=north east] {$a$};, то вы определяете (a)как ссылку на узел для метки $a$, центр которой, как вы его определяете, находится north eastв координате (-2,2). Но это координата (-2,2), которая вам на самом деле нужна для угла.

Поэтому вам лучше сделать следующее:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}

\begin{document}
\begin{tikzpicture}

% orthogonal ground line
\draw[thick] (-3,0) -- (3,0);

% Origin
\draw[fill=black] (0,0) coordinate (O) node [anchor=north] {$O$};

% vector a
\draw[thick,->] (0,0) -- (-2,2) coordinate (a) node[anchor=north east] {$a$};

% vector b
\draw[thick,->] (0,0) -- (2.5,1.5) coordinate (b) node[anchor=west] {$b$};

\pic[draw, angle eccentricity=1.2, angle radius=1cm,, "$\gamma$"] {angle=b--O--a};

\end{tikzpicture}
\end{document}

В качестве альтернативы вы можете использовать labels:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}

\begin{document}
\begin{tikzpicture}

% orthogonal ground line
\draw[thick] (-3,0) -- (3,0);

% Origin
\draw[fill=black] (0,0) coordinate[label={below:$0$}] (O);

% vector a
\draw[thick,->] (0,0) -- (-2,2) coordinate[label={below left:$a$}] (a);

% vector b
\draw[thick,->] (0,0) -- (2.5,1.5) coordinate[label={right:$b$}] (b);

\pic [draw, angle eccentricity=1.2, angle radius=1cm,, "$\gamma$"] {angle=b--O--a};

\end{tikzpicture}
\end{document}

введите описание изображения здесь

решение2

Это очень легко сделать с помощью pstricks, а именно pst-eucl:

    \documentclass[pstricks, border=6pt]{standalone}
    \usepackage{pst-eucl}

    \begin{document}

    \begin{pspicture}(-3,-1)(3,3)
    \psset{arrowinset=0.12,labelsep=3pt}
    \pstGeonode[PointSymbol=none, PosAngle={-90,135, 45}](0,0){O}(-2,2){a}(2.5,1.5){b}
    % orthogonal ground line
    \psline (-3,0)(3,0)
    \ncline{->}{O}{a}\ncline{->}{O}{b}
    \pstMarkAngle[linewidth=0.3pt, LabelSep=0.6]{b}{O}{a}{$\gamma$}%
    \end{pspicture}

    \end{document} 

введите описание изображения здесь

решение3

Узлы не в конечных точках, а где-то рядом, нужно указать координаты вот так

\begin{tikzpicture}[decoration=brace]
% orthogonal ground line
\draw[thick] (-3,0) -- (3,0);

% Origin
\coordinate (O) at (0,0);
\draw[fill=black] (O) node[anchor=north] {$O$};

% vector a
\coordinate (a) at (-2,2);
\draw[thick,->] (O) -- (a) node[anchor=south east] {$a$};

% vector b
\coordinate (b) at (2.5,1.5);
\draw[thick,->] (O) -- (b) node[anchor=south west] {$b$};

\pic [draw, -, angle eccentricity=1.2, angle radius=1cm,, "$\gamma$"] {angle=b--O--a};
\end{tikzpicture}

Связанный контент