Draw a 3D right-handed frame with good-looking origin
I've collected some answers from the comments.
Basic style
\documentclass[tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows.meta}
\tikzset{
axis/.style={-stealth,line width=2pt,every node/.append style={text=black}},
xaxis/.style={axis,red},
yaxis/.style={axis,green},
zaxis/.style={axis,blue},
}
\begin{document}
\foreach \rotationangle in {115,120,...,470}{
\tdplotsetmaincoords{70}{\rotationangle}
\begin{tikzpicture}
\clip (-1.5,-0.75) rectangle (1.5,1.5);
\begin{scope}[tdplot_main_coords]
\draw[xaxis] (0,0,0) -- (1,0,0) node[pos=1.3]{\( x \)};
\draw[yaxis] (0,0,0) -- (0,1,0) node[pos=1.3]{\( y \)};
\draw[zaxis] (0,0,0) -- (0,0,1) node[pos=1.3]{\( z \)};
\end{scope}
\end{tikzpicture}
}
\end{document}
Using line cap=round
Credits to @AlexG.
axis/.style={-stealth,line width=2pt,every node/.append style={text=black},line cap=round},
Overdrawing with a ball
Credits to @AlexG.
\filldraw[red] (0,0,0) circle [radius=0.04cm];
Overdrawing with a shaded ball
Credits to @AlexG.
\shade [ball color=black] (0,0,0) circle [radius=0.04cm];
Very similar to Max Snippe's nice answer except that I recycle some alternative to tikz-3dplot which allows you to rotate about all three axes without pain (look also at Max Snippe's nice alternative), and, more importantly, \pgflowlevelsynccm
to have more 3D-like arrows. (The shaded ball at the origin is adapted from the AlexG/Max Snippe consortioum. ;-)
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{3d}
\makeatletter
%from https://tex.stackexchange.com/a/375604/121799
%along x axis
\define@key{x sphericalkeys}{radius}{\def\myradius{#1}}
\define@key{x sphericalkeys}{theta}{\def\mytheta{#1}}
\define@key{x sphericalkeys}{phi}{\def\myphi{#1}}
\tikzdeclarecoordinatesystem{x spherical}{% %%%rotation around x
\setkeys{x sphericalkeys}{#1}%
\pgfpointxyz{\myradius*cos(\mytheta)}{\myradius*sin(\mytheta)*cos(\myphi)}{\myradius*sin(\mytheta)*sin(\myphi)}}
%along y axis
\define@key{y sphericalkeys}{radius}{\def\myradius{#1}}
\define@key{y sphericalkeys}{theta}{\def\mytheta{#1}}
\define@key{y sphericalkeys}{phi}{\def\myphi{#1}}
\tikzdeclarecoordinatesystem{y spherical}{% %%%rotation around x
\setkeys{y sphericalkeys}{#1}%
\pgfpointxyz{\myradius*sin(\mytheta)*cos(\myphi)}{\myradius*cos(\mytheta)}{\myradius*sin(\mytheta)*sin(\myphi)}}
%along z axis
\define@key{z sphericalkeys}{radius}{\def\myradius{#1}}
\define@key{z sphericalkeys}{theta}{\def\mytheta{#1}}
\define@key{z sphericalkeys}{phi}{\def\myphi{#1}}
\tikzdeclarecoordinatesystem{z spherical}{% %%%rotation around x
\setkeys{z sphericalkeys}{#1}%
\pgfpointxyz{\myradius*sin(\mytheta)*cos(\myphi)}{\myradius*sin(\mytheta)*sin(\myphi)}{\myradius*cos(\mytheta)}}
\makeatother
% definitions to make your life easier
\tikzset{rotate axes about y axis/.code={
\path (y spherical cs:radius=1,theta=90,phi=0+#1) coordinate(xpp)
(y spherical cs:radius=1,theta=00,phi=90+#1) coordinate(ypp)
(y spherical cs:radius=1,theta=90,phi=90+#1) coordinate(zpp);
},rotate axes about x axis/.code={
\path (x spherical cs:radius=1,theta=00,phi=90+#1) coordinate(xpp)
(x spherical cs:radius=1,theta=90,phi=00+#1) coordinate(ypp)
(x spherical cs:radius=1,theta=90,phi=90+#1) coordinate(zpp);
},
rotate axes about z axis/.code={
\path (z spherical cs:radius=1,theta=90,phi=#1) coordinate(xpp)
(z spherical cs:radius=1,theta=90,phi=90+#1) coordinate(ypp)
(z spherical cs:radius=1,theta=00,phi=#1) coordinate(zpp);
},
pitch/.style={rotate axes about y axis=#1,x={(xpp)},y={(ypp)},z={(zpp)}},
roll/.style={rotate axes about x axis=#1,x={(xpp)},y={(ypp)},z={(zpp)}},
yaw/.style={rotate axes about z axis=#1,x={(xpp)},y={(ypp)},z={(zpp)}}
}
\tikzset{
axis/.style={-stealth,line width=2pt,every node/.append style={text=black}},
xaxis/.style={axis,red},
yaxis/.style={axis,green},
zaxis/.style={axis,blue},
}
\begin{document}
\foreach\X in {0,5,...,355}
{\begin{tikzpicture}[yaw=00,scale=2]
\draw (-3,3,0) rectangle (3,-2,0);
\begin{scope}[pitch=\X]
\begin{scope}[canvas is xz plane at y=0,transform shape]
\pgflowlevelsynccm
\draw[yaxis] (0,0,0) -- (0,1);
\draw[xaxis] (0,0,0) -- (1,0);
\end{scope}
\draw[zaxis] (0,0,0) -- (0,1,0) node[pos=1.3]{\( z \)};
\node at (1.3,0,0) {\( x \)};
\node at (0,0,1.3) {\( y \)};
\end{scope}
\shade[ball color=black](0,0,0) circle (1mm);
\end{tikzpicture}}
\end{document}