Skip to content

Instantly share code, notes, and snippets.

@jamesamiller
Last active May 27, 2020 17:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamesamiller/8de0f4dbb8c6a54535df5cb5d91fd631 to your computer and use it in GitHub Desktop.
Save jamesamiller/8de0f4dbb8c6a54535df5cb5d91fd631 to your computer and use it in GitHub Desktop.
Plots the worldline of a "test rocket" in the accelerated reference frame of an "observer rocket" (special relativity)
\documentclass[crop=true, border=10pt]{standalone}
\usepackage{comment}
\begin{comment}
:Title: Motion of another rocket in an accelerated rocket frame
:Slug: Accelerated frame
:Tags: special relativity
:Author: J A Miller, UAH Physics & Astronomy, millerja@uah.edu, 2020/05/18
Worldlines of a test rocket in the accelerated coordinates $\xi$ and $\eta$ of an observer rocket. This illustrates that a constant proper distance requires different accelerations.
Figure caption:
\caption{The worldlines (\textit{purple lines}) of a second, test rocket in the accelerated reference frame of an observer rocket. The proper acceleration of the observer rocket is $\alpha=1$ and the test rocket is at an initial distance of $4$ away from the observer rocket (in both the inertial and observer rocket frames). The \textit{red dots} are the location of the of the test rocket at test rocket proper times $0$, $5$, $10$, and $15$.}
Basic plot style and colors from:
https://gist.github.com/mcnees/45b9f53ad371c38ba6f3759df5880fb1
---------------------------------------------------------------------
Background
---------------------------------------------------------------------
The equations of motion for an object undergoing uniform proper acceleration $\alpha$ are
\begin{equation}
\begin{split}
x &= \frac{1}{\alpha} \cosh(\alpha \tau) - \frac{1}{\alpha} + x_0 \\
t &= \frac{1}{\alpha} \sinh(\alpha \tau),
\end{split}
\end{equation}
where $\tau$ is the proper time, and $x_0$ is the starting location.
Accelerated coordinates can be defined by
\begin{equation}
\begin{split}
\xi &= \qty[ \qty( x - x_0 + \frac{1}{\alpha} )^2 - t^2 ]^{1/2} - \frac{1}{\alpha} \\
\eta &= \frac{1}{\alpha} \tanh^{-1} \frac{t}{x - x_0 + 1/\alpha}.
\end{split}
\end{equation}
When you put the equations of motion into these coordinates, you get $\xi = 0$ and $\eta = \tau$, as you would want. The object stays stationary at $\xi=0$ as the coordinate system rides with it. The quantity $\eta$ is the time coordinate, and equals the proper time. The transformation is only defined for $|t| < x - x_0 + \frac{1}{\alpha}$.
We can plot the motion of another rocket, a "test rocket", in the frame of an "observer rocket." Equivalently, these could be the two ends of the same rocket.
We see that to maintain a constant proper distance between the rockets (or the rocket ends), the acceleration must vary according to
\begin{equaiton}
\alpha_R = \frac{\alpha_L}{1 + L_0 \alpha_L},
\end{equation}
where $L_0$ is the proper distance between the rockets and R and L denote right and left, respectively.
\end{comment}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{xcolor}
% colors
\definecolor{plum}{rgb}{0.36078, 0.20784, 0.4}
\definecolor{chameleon}{rgb}{0.30588, 0.60392, 0.023529}
\definecolor{cornflower}{rgb}{0.12549, 0.29020, 0.52941}
\definecolor{scarlet}{rgb}{0.8, 0, 0}
\definecolor{brick}{rgb}{0.64314, 0, 0}
\definecolor{sunrise}{rgb}{0.80784, 0.36078, 0}
\definecolor{lightblue}{rgb}{0.15,0.35,0.75}
% ----------------------- user specifications ------------------------
% proper acceleration of observer rocket
\newcommand*{\accel}{1.0}
% calculate the inverse of observer rocket acceleration
\pgfmathsetmacro{\accelinv}{1/\accel}
% initial starting point for the observer rocket
\newcommand*{\xinit}{0} % this is $x_0$.
% proper acceleration of "test" rocket
\newcommand*{\acceltest}{0.2} % this is now reset below to different values
% calculate the inverse of test rocket acceleration
\pgfmathsetmacro{\accelinvtest}{1/\acceltest}
% initial starting point for the test rocket
\newcommand*{\xinittest}{4} % this is $x_0$ for the test rocket
% define inertial frame location and time for the test rocket as a function of its proper time
\pgfkeys{/pgf/declare function={xtest(\tau) = \accelinvtest*cosh(\acceltest*\tau)-\accelinvtest+\xinittest;}}
\pgfkeys{/pgf/declare function={ttest(\tau) = \accelinvtest*sinh(\acceltest*\tau);}}
% define the accelerated coordinates of the test rocket, as a function of its proper time,
% in the frame of the observer rocket
\pgfkeys{/pgf/declare function={arctanh(\x) = 0.5*(ln(1+\x)-ln(1-\x));}}
\pgfkeys{/pgf/declare function={eta(\tau) = \accelinv*arctanh(ttest(\tau)/(xtest(\tau)-\xinit+\accelinv));}}
\pgfkeys{/pgf/declare function={xi(\tau) = sqrt((xtest(\tau)-\xinit+\accelinv)^2 - ttest(\tau)^2)-\accelinv ;}}
% Set the point style for the proper time ticks
\tikzset{
taudot/.style={circle,draw=scarlet!70,fill=scarlet!20,inner sep=1.5pt}
}
% ------------------------ begin figure ------------------------------
\begin{document}
\begin{tikzpicture}[scale=1.2,domain=-2:9]
\tikzstyle{axisarrow} = [-{Latex[inset=0pt,length=7pt]}]
% Draw the background grid.
\draw [cornflower!30,step=0.2,thin] (-2,-1) grid (9,5);
\draw [cornflower!60,step=1.0,thin] (-2,-1) grid (9,5);
% Clip everything that falls outside the grid
\clip(-2,-1) rectangle (9,5);
% Draw Axes
\draw[thick,axisarrow] (0,-1) -- (0,5);
\node[right,inner sep=0pt] at (0.2,4.7) {$\eta$ (Observer Rocket Worldline)};
\draw[thick,axisarrow] (-2,0) -- (9,0);
\node[inner sep=0pt] at (8.5,-0.3) {$\xi$};
% Event horizon
\draw[thick,dashed,scarlet] (-\accelinv,-1) -- (-\accelinv,5);
\node[rotate=90,inner sep=0pt] at (-\accelinv-0.2,2.5) {Event Horizon of Observer};
% Draw the worldlines of the test rockets
% For x_0 = 4 of the test rocket, \acceltest = 1/5 will yield constant proper distance
% We can use different maximum proper times depending on the test rocket acceleration
\foreach \acceltest in {0.1}
{
\renewcommand{\accelinvtest}{1/\acceltest};
\draw[domain=0:6,smooth,variable=\tau,plum,thick,samples=100,axisarrow]
plot ({xi(\tau)},{eta(\tau)});
}
\foreach \acceltest in {0.3}
{
\renewcommand{\accelinvtest}{1/\acceltest};
\draw[domain=0:9,smooth,variable=\tau,plum,thick,samples=100,axisarrow]
plot ({xi(\tau)},{eta(\tau)});
}
\foreach \acceltest in {0.22}
{
\renewcommand{\accelinvtest}{1/\acceltest};
\draw[domain=0:15,smooth,variable=\tau,plum,thick,samples=100,axisarrow]
plot ({xi(\tau)},{eta(\tau)});
}
% use larger proper times for the correct one
\foreach \acceltest in {0.2}
{
\renewcommand{\accelinvtest}{1/\acceltest};
\draw[domain=0:15,smooth,variable=\tau,plum,thick,samples=100,axisarrow]
plot ({xi(\tau)},{eta(\tau)});
}
% Add the location at the text rocket proper times
\foreach \tau in {0,5,10,15}
{
\node[taudot] at ({xi(\tau)},{eta(\tau)});
}
% Some more labels
\node[right,inner sep=0pt] at (1.5,1.9) {$\alpha_t = 0.1$};
\node[inner sep=0pt] at (4,3.2) {$\alpha_t= 0.2$};
\node[inner sep=0pt] at (8.2,1.9) {$\alpha_t= 0.3$};
\node[inner sep=0pt] at (7.5,2.9) {$\alpha_t= 0.22$};
\node[right,inner sep=0pt] at (5.0,3.5) {Test Rocket Worldlines};
\end{tikzpicture}
\end{document}
@jamesamiller
Copy link
Author

jamesamiller commented May 18, 2020

Plot using the parameters in the above file.
fig-rocketAccelCoor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment