{{ message }}

Instantly share code, notes, and snippets.

# mcnees/RigidRocket.tex

Created Oct 26, 2017
Draw a spacetime diagram showing an accelerating rocket with constant proper length.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 \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}