\documentclass[border=10pt]{standalone} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{mathrsfs} \usepackage{tikz} \usetikzlibrary{arrows.meta} \usetikzlibrary{decorations.markings} \usepackage{tikz-3dplot} \usepackage{pgfplots} \usepackage{colortbl} \usepackage{xcolor} %-------------------------------------------------------------- % Define a few 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} \begin{document} \begin{tikzpicture}[scale=1,domain=-1:16] \tikzstyle{axisarrow} = [-{Latex[inset=0pt,length=7pt]}] %-------------------------------------------------------------- % We place the origin so each point on the rocket is always % some constant proper distance from the event (0,0); %-------------------------------------------------------------- %-------------------------------------------------------------- % Set some constants we need. %-------------------------------------------------------------- % Use units where c=1 \pgfmathsetmacro\clight{1}; % Set the acceleration of the back of the rocket in units of ls/s^2. \pgfmathsetmacro\alphaB{0.25}; % Set the (constant) proper length of the rocket, from back to front \pgfmathsetmacro\Length{8}; %-------------------------------------------------------------- % Compute some constants we need. %-------------------------------------------------------------- % Compute the acceleration at the front of the rocket, based on % the acceleration at the back \alphaB and the constant proper % length L. \pgfmathsetmacro\alphaF{\alphaB*\clight^2/(\clight^2 + \alphaB*\Length)}; % Compute the acceleration at the midpoint of the rocket, based on % the acceleration at the back \alphaB and the constant proper % length L. \pgfmathsetmacro\alphaM{\alphaB*\clight^2/(\clight^2 + \alphaB*\Length/2)}; %-------------------------------------------------------------- % How much proper time to plot for each part of the rocket. %-------------------------------------------------------------- % Plot for this amount of proper time according to an observer % in the back of the rocket. \pgfmathsetmacro\tBmax{8}; % The amount of proper time experienced by someone in the front % of the rocket, simultaneous with the back of the rocket at % \tBax. \pgfmathsetmacro\tFmax{\tBmax*\alphaB/\alphaF}; % The amount of proper time experienced by someone at the midpoint % of the rocket, simultaneous with the back of the rocket at % \tBax. \pgfmathsetmacro\tMmax{\tBmax*\alphaB/\alphaM}; %-------------------------------------------------------------- % Draw things %-------------------------------------------------------------- % Draw the background grid. \draw [cornflower!30,step=0.2,thin] (-1,-2) grid (16,12); \draw [cornflower!60,step=1.0,thin] (-1,-2) grid (16,12); % Clip everything that falls outside the grid \clip(-1,-2) rectangle (16,12); % Draw Axes \draw[thick,axisarrow] (0,-2) -- (0,12); \node[inner sep=0pt] at (0.5,11.7) {$t (s)$}; \draw[thick,axisarrow] (-1,0) -- (16,0); \node[inner sep=0pt] at (15.5,-0.4) {$x (\ell s)$}; % Light ray from the event (0,0) traveling in the positive % x-direction. The worldlines of all points of the rocket % asymptote to this line. \draw[chameleon,thick] (0,0) -- (12,12); % Draw lines of simultaneity through N events happening every 1 % second, according to a clock at the back of the rocket. \foreach \tB in {1,2,...,4} { \draw[orange, dashed, thick] (0,0) -- (16,{16*tanh(\alphaB*\tB/\clight)}); } %-------------------------------------------------------------- % Back of the rocket %-------------------------------------------------------------- % Plot the wordline of the back of the rocket, as a function of % its proper time. \draw[domain=0:\tBmax,smooth,variable=\tB,scarlet,thick] plot ({(\clight^2/\alphaB)*cosh(\tB*\alphaB/\clight)},{(\clight/\alphaB)*sinh(\tB*\alphaB/\clight)}); % Add a node at events spaced 1 second of proper time apart % along the back of the rocket's worldline. \foreach \tB in {0,1,2,...,\tBmax} { \node[circle,draw=scarlet!70,fill=scarlet!20,inner sep=2pt] at ({(\clight^2/\alphaB)*cosh(\alphaB*\tB/\clight)},{(\clight/\alphaB)*sinh(\alphaB*\tB/\clight)}) {}; } %-------------------------------------------------------------- % Middle of the rocket %-------------------------------------------------------------- % Plot the wordline of the midpoint of the rocket, as a function of % its proper time. \draw[domain=0:\tMmax,smooth,variable=\tM,cornflower,thick] plot ({(\clight^2/\alphaM)*cosh(\tM*\alphaM/\clight)},{(\clight/\alphaM)*sinh(\tM*\alphaM/\clight)}); % Add a node at events spaced 1 second of proper time apart % along the midpoint of the rocket's worldline. \foreach \tM in {0,1,2,...,\tMmax} { \node[circle,draw=cornflower!70,fill=cornflower!20,inner sep=2pt] at ({(\clight^2/\alphaM)*cosh(\alphaM*\tM/\clight)},{(\clight/\alphaM)*sinh(\alphaM*\tM/\clight)}) {}; } %-------------------------------------------------------------- % Front of the rocket %-------------------------------------------------------------- % Plot the wordline of the front of the rocket, as a function of % its proper time. \draw[domain=0:\tFmax,smooth,variable=\tF,plum,thick] plot ({(\clight^2/\alphaF)*cosh(\tF*\alphaF/\clight)},{(\clight/\alphaF)*sinh(\tF*\alphaF/\clight)}); % Add a node at events spaced 1 second of proper time apart % along the front of the rocket's worldline. \foreach \tF in {0,1,2,...,\tFmax} { \node[circle,draw=plum!70,fill=plum!20,inner sep=2pt] at ({(\clight^2/\alphaF)*cosh(\alphaF*\tF/\clight)},{(\clight/\alphaF)*sinh(\alphaF*\tF/\clight)}) {}; } %-------------------------------------------------------------- % Add some labels for each worldline. %-------------------------------------------------------------- \node [] at ({\clight^2/\alphaB},-0.5) {$x_{B}$}; \node [] at ({\clight^2/\alphaM},-0.5) {$x_{M}$}; \node [] at ({\clight^2/\alphaF},-0.5) {$x_{F}$}; \end{tikzpicture} \end{document}