During my research I came across the illustration of two reference frames. In my opinion this illustration is lacking, because the coordinate systems are not drawn. This makes it hard to understand, for example, how right ascension and declination are measured, see below.
(Seidelmann et. al.)
To clarify this, I am trying to make a complementary drawing that shows the coordinate systems, and measures alpha0 and delta0. This is what I came up with:
Note that the orientation of the two frames is a bit different to make it easier to draw.
My main problem is that I am not able to draw the declination delta0. (Which measures from the arc of alpha0 up to the body's north pole, in the ICRF frame.) I am trying to accomplish that using the great tikz3dplot package, see the code below!
\documentclass{article}
\usepackage{wasysym}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{pgfplots}
% Workaround for making use of externalization possible
% -> remove hardcoded pdflatex and replace by lualatex
\usepgfplotslibrary{external}
\tikzset{external/system call={lualatex \tikzexternalcheckshellescape%
-halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
% Redefine rotation sequence for tikz3d-plot to z-y-x
\newcommand{\tdseteulerxyz}{
\renewcommand{\tdplotcalctransformrotmain}{%
%perform some trig for the Euler transformation
\tdplotsinandcos{\sinalpha}{\cosalpha}{\tdplotalpha}
\tdplotsinandcos{\sinbeta}{\cosbeta}{\tdplotbeta}
\tdplotsinandcos{\singamma}{\cosgamma}{\tdplotgamma}
%
\tdplotmult{\sasb}{\sinalpha}{\sinbeta}
\tdplotmult{\sasg}{\sinalpha}{\singamma}
\tdplotmult{\sasbsg}{\sasb}{\singamma}
%
\tdplotmult{\sacb}{\sinalpha}{\cosbeta}
\tdplotmult{\sacg}{\sinalpha}{\cosgamma}
\tdplotmult{\sasbcg}{\sasb}{\cosgamma}
%
\tdplotmult{\casb}{\cosalpha}{\sinbeta}
\tdplotmult{\cacb}{\cosalpha}{\cosbeta}
\tdplotmult{\cacg}{\cosalpha}{\cosgamma}
\tdplotmult{\casg}{\cosalpha}{\singamma}
%
\tdplotmult{\cbsg}{\cosbeta}{\singamma}
\tdplotmult{\cbcg}{\cosbeta}{\cosgamma}
%
\tdplotmult{\casbsg}{\casb}{\singamma}
\tdplotmult{\casbcg}{\casb}{\cosgamma}
%
%determine rotation matrix elements for Euler transformation
\pgfmathsetmacro{\raaeul}{\cacb}
\pgfmathsetmacro{\rabeul}{\casbsg - \sacg}
\pgfmathsetmacro{\raceul}{\sasg + \casbcg}
\pgfmathsetmacro{\rbaeul}{\sacb}
\pgfmathsetmacro{\rbbeul}{\sasbsg + \cacg}
\pgfmathsetmacro{\rbceul}{\sasbcg - \casg}
\pgfmathsetmacro{\rcaeul}{-\sinbeta}
\pgfmathsetmacro{\rcbeul}{\cbsg}
\pgfmathsetmacro{\rcceul}{\cbcg}
}
}
\tdseteulerxyz
\usepackage{siunitx}
\begin{document}
% Set the plot display orientation
% Syntax: \tdplotsetdisplay{\theta_d}{\phi_d}
\tdplotsetmaincoords{60}{110}
% Start tikz picture, and use the tdplot_main_coords style to implement the display
% coordinate transformation provided by 3dplot.
\begin{tikzpicture}[scale=5,tdplot_main_coords]
% Set origin of main (body) coordinate system
\coordinate (O) at (0,0,0);
% Draw main coordinate system
\draw[red, thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{};
\draw[red, thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{};
\draw[red, thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{Body's north pole ($\alpha_0$, $\delta_0$)};
% Draw body's equator
\tdplotdrawarc[red,]{(O)}{1}{0}{360}{anchor=east}{}
% Manually fine-tune position of label
\node[tdplot_main_coords,anchor=south] at (-0.1,1.3,0){\color{red} Body's equator};
% Draw the prime meridian
\tdplotsetthetaplanecoords{60}
\tdplotdrawarc[densely dashed, tdplot_rotated_coords]{(O)}{1}{0}{90}{anchor=north west}{}
% Fine-tune position of label
\node[tdplot_main_coords, rotate=-65] at (0,0.5,0.3){Prime meridian};
% Rotate coordinate system to create ICRF
% Use and angles in z-y-x rotation sequence
% Syntax: \tdplotsetrotatedcoords{\alpha}{\beta}{\gamma}
\tdplotsetrotatedcoords{-60}{-25}{-15}
% Translate the rotated coordinate system (NOT NEEDED HERE)
% Syntax: \tdplotsetrotatedcoordsorigin{point}
\tdplotsetrotatedcoordsorigin{(O)}
% Use the tdplot_rotated_coords style to work in the rotated, translated coordinate frame
% Draw the coordinate axes
\draw[thick,tdplot_rotated_coords,->, blue] (0,0,0) -- (1,0,0) node[anchor=south west]{\vernal};
\draw[thick,tdplot_rotated_coords,->, blue] (0,0,0) -- (0,1,0) node[anchor=west]{};
\draw[thick,tdplot_rotated_coords,->, blue] (0,0,0) -- (0,0,1) node[anchor=west]{ICRF north pole};
% Draw the ICRF Equator
\tdplotdrawarc[tdplot_rotated_coords,color=blue]{(O)}{1}{0}{360}{anchor=south
west,color=black}{}
% Manually fine-tune label
\node[tdplot_main_coords,anchor=south] at (0.3,1.33,0){\color{blue} ICRF equator};
% Draw alpha (right ascension), delta (declination) in ICRF
% Get coordinates of body's north-pole in ICRF frame
\tdplottransformmainrot{0}{0}{1}
% This returns
% \tdplotresx
% \tdplotresy
% \tdplotresz
% Get polar coordinates of this vector
\tdplotgetpolarcoords{\tdplotresx}{\tdplotresy}{\tdplotresz}
% This returns
% \tdplotrestheta
% \tdplotresphi
% Draw the right ascension
\tdplotdrawarc[tdplot_rotated_coords, color=magenta, line
width=2pt]{(O)}{1}{0}{\tdplotresphi}{anchor=west}{$\alpha_0$}
% Draw the declination
% THIS GOES WRONG AND DOES NOT WORK
% Should go from end of alpha0 arc to the body's north pole in the ICRF frame
% \tdplotsetrotatedthetaplanecoords{\tdplotresphi}
% \tdplotdrawarc[tdplot_rotated_coords, color=red]{(O)}{1}{0}{90-\tdplotrestheta}{anchor=south
% west,color=black}{\textcolor{blue}{x}}
% Coordinate output for debugging
\node[tdplot_main_coords,anchor=south] at (1,1,2){Main coords: \tdplotrestheta,
\tdplotresphi, \tdplotresx, \tdplotresy, \tdplotresz};
\end{tikzpicture}
\end{document}
(Bonus)
I also have a hard time making arcs such as the 90+alpha0 shown in the figure, or letting the text "prime meridian follow the curvature. Any stylistic help would be greatly appreciated as well.
Seidelmann, P. Kenneth et. al. Report of the IAU/IAG Working Group on cartographic coordinates and rotational elements: 2006. Celestial Mech Dyn Astr (2007) 98:155–180