Edit and compile if you like:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{math}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{0.125pt}
%
% File name: directional-angles.tex
% Description:
% The directional angles of a vector are geometrically represented.
%
% Date of creation: July, 25th, 2021.
% Date of last modification: October, 9th, 2022.
% Author: Efran Soto Apolinar.
% https://www.aprendematematicas.org.mx/author/efrain-soto-apolinar/instructing-courses/
% Source: page 11 of the
% Glosario Ilustrado de Matem\'aticas Escolares.
% https://tinyurl.com/5udm2ufy
%
% Terms of use:
% According to TikZ.net
% https://creativecommons.org/licenses/by-nc-sa/4.0/
% Your commitment to the terms of use is greatly appreciated.
%
\begin{document}
\tdplotsetmaincoords{80}{120}
%
\begin{tikzpicture}[tdplot_main_coords,scale=0.75]
% Indicate the components of the vector in rectangular coordinates
\pgfmathsetmacro{\ux}{4}
\pgfmathsetmacro{\uy}{4}
\pgfmathsetmacro{\uz}{3}
% Length of each axis
\pgfmathsetmacro{\ejex}{\ux+0.5}
\pgfmathsetmacro{\ejey}{\uy+0.5}
\pgfmathsetmacro{\ejez}{\uz+0.5}
\pgfmathsetmacro{\umag}{sqrt(\ux*\ux+\uy*\uy+\uz*\uz)} % Magnitude of vector $\vec{u}$
% Compute the angle $\theta$
\pgfmathsetmacro{\angthetax}{pi*atan(\uy/\ux)/180}
\pgfmathsetmacro{\angthetay}{pi*atan(\ux/\uz)/180}
\pgfmathsetmacro{\angthetaz}{pi*atan(\uz/\uy)/180}
% Compute the angle $\phi$
\pgfmathsetmacro{\angphix}{pi*acos(\ux/\umag)/180}
\pgfmathsetmacro{\angphiy}{pi*acos(\uy/\umag)/180}
\pgfmathsetmacro{\angphiz}{pi*acos(\uz/\umag)/180}
% Compute rho sin(phi) to simplify computations
\pgfmathsetmacro{\costz}{cos(\angthetax r)}
\pgfmathsetmacro{\sintz}{sin(\angthetax r)}
\pgfmathsetmacro{\costy}{cos(\angthetay r)}
\pgfmathsetmacro{\sinty}{sin(\angthetay r)}
\pgfmathsetmacro{\costx}{cos(\angthetaz r)}
\pgfmathsetmacro{\sintx}{sin(\angthetaz r)}
% Coordinate axis
\draw[thick,->] (0,0,0) -- (\ejex,0,0) node[below left] {$x$};
\draw[thick,->] (0,0,0) -- (0,\ejey,0) node[right] {$y$};
\draw[thick,->] (0,0,0) -- (0,0,\ejez) node[above] {$z$};
% Projections of the components in the axis
\draw[gray,very thin,opacity=0.5] (0,0,0) -- (\ux,0,0) -- (\ux,\uy,0) -- (0,\uy,0) -- (0,0,0); % face on the plane z = 0
\draw[gray,very thin,opacity=0.5] (0,0,\uz) -- (\ux,0,\uz) -- (\ux,\uy,\uz) -- (0,\uy,\uz) -- (0,0,\uz); % face on the plane z = \uz
\draw[gray,very thin,opacity=0.5] (0,0,0) -- (0,0,\uz) -- (\ux,0,\uz) -- (\ux,0,0) -- (0,0,0); % face on the plane y = 0
\draw[gray,very thin,opacity=0.5] (0,\uy,0) -- (0,\uy,\uz) -- (\ux,\uy,\uz) -- (\ux,\uy,0) -- (0,\uy,0); % face on the plane y = \uy
\draw[gray,very thin,opacity=0.5] (0,0,0) -- (0,\uy,0) -- (0,\uy,\uz) -- (0,0,\uz) -- (0,0,0); % face on the plane x = 0
\draw[gray,very thin,opacity=0.5] (\ux,0,0) -- (\ux,\uy,0) -- (\ux,\uy,\uz) -- (\ux,0,\uz) -- (\ux,0,0); % face on the plane x = \ux
% Arc indicating the angle $\alpha$
% (angle formed by the vector $\vec{v}$ and the $x$ axis)
\draw[red,thick] plot[domain=0:\angphix,smooth,variable=\t] ({cos(\t r)},{sin(\t r)*\costx},{sin(\t r)*\sintx});
% Arc indicating the angle $\beta$
% (angle formed by the vector $\vec{v}$ and the $y$ axis)
\draw[red,thick] plot[domain=0:\angphiy,smooth,variable=\t] ({sin(\t r)*\sinty},{cos(\t r)},{sin(\t r)*\costy});
% Arc indicating the angle $\gamma$
% (angle formed by the vector $\vec{v}$ and the $z$ axis)
\draw[red,thick] plot[domain=0:\angphiz,smooth,variable=\t] ({sin(\t r)*\costz},{sin(\t r)*\sintz},{cos(\t r)});
% Vector $\vec{u}$
\draw[blue,thick,->] (0,0,0) -- (\ux,\uy,\uz) node [below right] {$\vec{u}$};
% Nodes indicating the direction angles
\pgfmathsetmacro{\xa}{1.85*cos(0.5*\angphix r)}
\pgfmathsetmacro{\ya}{1.85*sin(0.5*\angphix r)*\costx}
\pgfmathsetmacro{\za}{1.85*sin(0.5*\angphiz r)*\sintx}
\node[red] at (\xa,\ya,\za) {\footnotesize$\alpha$};
%
\pgfmathsetmacro{\xb}{1.5*sin(0.5*\angphiy r)*\sinty}
\pgfmathsetmacro{\yb}{1.5*cos(0.5*\angphiy r)}
\pgfmathsetmacro{\zb}{1.5*sin(0.5*\angphiy r)*\costy}
\node[red] at (\xb,\yb,\zb) {\footnotesize$\beta$};
%
\pgfmathsetmacro{\xc}{1.5*sin(0.5*\angphiz r)*\costz}
\pgfmathsetmacro{\yc}{1.5*sin(0.5*\angphiz r)*\sintz}
\pgfmathsetmacro{\zc}{1.5*cos(0.5*\angphiz r)}
\node[red] at (\xc,\yc,\zc) {\footnotesize$\gamma$};
%
\end{tikzpicture}
%
\end{document}
Click to download: directional-angles.tex • directional-angles.pdf
Open in Overleaf: directional-angles.tex
See more on the author page of Efraín Soto Apolinar.
