Files
handouts/src/Advanced/Relativity/diagram.tex
Mark 18b96e2db6
All checks were successful
CI / Typst formatting (push) Successful in 6s
CI / Typos (push) Successful in 47s
CI / Build (push) Successful in 7m17s
Add relativity handout
2025-02-05 14:06:39 -08:00

249 lines
9.1 KiB
TeX

% Diagrams adapted from https://tikz.net/relativity_minkowski_diagram/
%
% MARK: Matt's tweaks
%
\newcommand{\emptydiagram}[1]{
\begin{center}
\begin{tikzpicture}[scale=2]
\def\xmax{2}
\def\xmaxp{2.2} % maximum of rotated axis
\def\Nlines{6} % number of world lines (at constant x/t)
\pgfmathsetmacro\ang{atan(1/2)} % angle between x and x' axes
\pgfmathsetmacro\d{0.9*\xmax/\Nlines}refer % grid size
\pgfmathsetmacro\D{\d/cos(\ang)/sqrt(1-tan(\ang)^2)} % grid size, boosted
\coordinate (O) at (0,0);
\coordinate (X) at (\xmax+0.2,0);
\coordinate (T) at (0,\xmax+0.2);
\coordinate (X') at (\ang:\xmaxp+0.2);
\coordinate (T') at (90-\ang:\xmaxp+0.2);
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,\Nlines}{
\draw[world line] (-\x,-\xmax) -- (-\x,\xmax);
\draw[world line] ( \x,-\xmax) -- ( \x,\xmax);
\draw[world line t] (-\xmax,-\x) -- (\xmax,-\x);
\draw[world line t] (-\xmax, \x) -- (\xmax, \x);
}
% AXES
\draw[->,thick] (0,-\xmax) -- (T) node[left=-1] {#1: $t$};
\draw[->,thick] (-\xmax,0) -- (X) node[below=0] {$x$};
\end{tikzpicture}
\end{center}
}
\newcommand{\emptydiagramc}[1]{
\begin{center}
\begin{tikzpicture}[scale=2]
\def\xmax{2}
\def\xmaxp{2.2} % maximum of rotated axis
\def\Nlines{6} % number of world lines (at constant x/t)
\pgfmathsetmacro\ang{atan(1/2)} % angle between x and x' axes
\pgfmathsetmacro\d{0.9*\xmax/\Nlines}refer % grid size
\pgfmathsetmacro\D{\d/cos(\ang)/sqrt(1-tan(\ang)^2)} % grid size, boosted
\coordinate (O) at (0,0);
\coordinate (X) at (\xmax+0.2,0);
\coordinate (T) at (0,\xmax+0.2);
\coordinate (X') at (\ang:\xmaxp+0.2);
\coordinate (T') at (90-\ang:\xmaxp+0.2);
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,\Nlines}{
\draw[world line] (-\x,-\xmax) -- (-\x,\xmax);
\draw[world line] ( \x,-\xmax) -- ( \x,\xmax);
\draw[world line t] (-\xmax,-\x) -- (\xmax,-\x);
\draw[world line t] (-\xmax, \x) -- (\xmax, \x);
}
% AXES
\draw[->,thick] (0,-\xmax) -- (T) node[left=-1] {#1: $ct$};
\draw[->,thick] (-\xmax,0) -- (X) node[below=0] {$x$};
\end{tikzpicture}
\end{center}
}
\newcommand{\halfdiagramc}[1]{
\begin{center}
\begin{tikzpicture}[scale=2]
\def\xmax{2}
\def\xmaxp{2.2} % maximum of rotated axis
\def\Nlines{6} % number of world lines (at constant x/t)
\pgfmathsetmacro\ang{atan(1/2)} % angle between x and x' axes
\pgfmathsetmacro\d{0.9*\xmax/\Nlines}refer % grid size
\pgfmathsetmacro\D{\d/cos(\ang)/sqrt(1-tan(\ang)^2)} % grid size, boosted
\coordinate (O) at (0,0);
\coordinate (X) at (\xmax+0.2,0);
\coordinate (T) at (0,\xmax+0.2);
\coordinate (X') at (\ang:\xmaxp+0.2);
\coordinate (T') at (90-\ang:\xmaxp+0.2);
% WORLD LINE GRID
\message{ Making world lines...^^J}
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,\Nlines}{
\message{ Running i/N=\i/\Nlines, x=\x...^^J}
\draw[world line] (-\x,-0.2) -- (-\x,\xmax);
\draw[world line] ( \x,-0.2) -- ( \x,\xmax);
%\draw[world line t] (-\xmax,-\x) -- (\xmax,-\x);
\draw[world line t] (-\xmax, \x) -- (\xmax, \x);
}
% AXES
\draw[->,thick] (0,-0.2) -- (T) node[left=-1] {#1: $ct$};
\draw[->,thick] (-\xmax,0) -- (X) node[below=0] {$x$};
\end{tikzpicture}
\end{center}
}
\newcommand{\halfdiagramcwide}[1]{
\begin{center}
\begin{tikzpicture}[scale=2]
\def\xmax{3.5}
\def\xmaxp{2.2} % maximum of rotated axis
\def\Nlines{10} % number of world lines (at constant x/t)
\pgfmathsetmacro\ang{atan(1/2)} % angle between x and x' axes
\pgfmathsetmacro\d{0.9*\xmax/\Nlines}refer % grid size
\pgfmathsetmacro\D{\d/cos(\ang)/sqrt(1-tan(\ang)^2)} % grid size, boosted
\coordinate (O) at (0,0);
\coordinate (X) at (\xmax+0.2,0);
\coordinate (T) at (0,1.95);
\coordinate (X') at (\ang:\xmaxp+0.2);
\coordinate (T') at (90-\ang:\xmaxp+0.2);
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,\Nlines}{
\draw[world line] (-\x,-0.2) -- (-\x,1.95);
\draw[world line] ( \x,-0.2) -- ( \x,1.95);
%\draw[world line t] (-\xmax,-\x) -- (\xmax,-\x);
%\draw[world line t] (-\xmax, \x) -- (\xmax, \x);
}
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,5}{
% \draw[world line] (-\x,-0.2) -- (-\x,\xmax);
% \draw[world line] ( \x,-0.2) -- ( \x,\xmax);
%\draw[world line t] (-\xmax,-\x) -- (\xmax,-\x);
\draw[world line t] (-\xmax, \x) -- (\xmax, \x);
}
% AXES
\draw[->,thick] (0,-0.2) -- (T) node[left=-1] {#1: $ct$};
\draw[->,thick] (-\xmax,0) -- (X) node[below=0] {$x$};
\end{tikzpicture}
\end{center}
}
%
% MARK: tikz setup
%
\usepackage{tikz}
\usetikzlibrary{patterns}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{etoolbox} % ifthen
\usepackage[outline]{contour} % glow around text
\usetikzlibrary{calc} % for adding up coordinates
\usetikzlibrary{decorations.markings,decorations.pathmorphing}
\usetikzlibrary{angles,quotes} % for pic (angle labels)
\usetikzlibrary{arrows.meta} % for arrow size
\usepackage{xfp} % higher precision (16 digits?)
\contourlength{1.1pt}
\tikzset{>=latex} % for LaTeX arrow head
\colorlet{myred}{red!85!black}
\colorlet{mydarkred}{red!55!black}
\colorlet{mylightred}{red!85!black!12}
\colorlet{myfieldred}{mydarkred!5} % for S' background
\colorlet{myredhighlight}{myred!20} % highlights simultaneity in ladder paradox
\colorlet{myblue}{blue!80!black}
\colorlet{mydarkblue}{blue!50!black}
\colorlet{mylightblue}{blue!50!black!30}
\colorlet{mylightblue2}{myblue!10}
\colorlet{mygreen}{green!80!black}
\colorlet{mypurple}{blue!40!red!80!black}
\colorlet{mydarkgreen}{green!50!black}
\colorlet{mydarkpurple}{blue!40!red!50!black}
\colorlet{myorange}{orange!40!yellow!95!black}
\colorlet{mydarkorange}{orange!40!yellow!85!black}
\colorlet{mybrown}{brown!20!orange!90!black}
\colorlet{mydarkbrown}{brown!20!orange!55!black}
\colorlet{mypurplehighlight}{mydarkpurple!20} % highlights simultaneity in ladder paradox
\tikzstyle{world line}=[myblue!40,line width=0.3]
\tikzstyle{world line t}=[mypurple!50!myblue!40,line width=0.3]
\tikzstyle{world line'}=[mydarkred!40,line width=0.3]
\tikzstyle{mysmallarr}=[-{Latex[length=3,width=2]},thin]
\tikzstyle{mydashed}=[dash pattern=on 3 off 3]
\tikzstyle{rod}=[mydarkbrown,draw=mydarkbrown,double=mybrown,double distance=2pt,
line width=0.2,line cap=round,shorten >=1pt,shorten <=1pt]
%\tikzstyle{rod'}=[rod,draw=mydarkbrown!80!red!85,double=mybrown!80!red!85]
\tikzstyle{vector}=[->,line width=1,line cap=round]
\tikzstyle{vector'}=[vector,shorten >=1.2]
\tikzstyle{particle}=[mygreen,line width=0.9]
\tikzstyle{photon}=[-{Latex[length=5,width=4]},myorange,line width=0.8,decorate,
decoration={snake,amplitude=1.0,segment length=5,post length=5}]
\def\tick#1#2{\draw[thick] (#1) ++ (#2:0.06) --++ (#2-180:0.12)}
\def\tickp#1#2{\draw[thick,mydarkred] (#1) ++ (#2:0.06) --++ (#2-180:0.12)}
\def\Nsamples{100} % number samples in plot
% COMMON AXES
\pgfdeclarelayer{back} % to draw on background
\pgfsetlayers{back,main} % set order
\def\xmin{0.23}
\def\xmax{2}
\def\Nlines{6} % number of world lines (at constant x/t)
\def\DNxp{0} % difference in number of world lines of x' axis
\def\DNyp{0} % difference in number of world lines of ct' axis
\def\DNy{0} % difference in number of world lines of ct axis
\def\ang{20} % angle between x and x' axes
\def\xplabelang{180} % anchor angle of x' axis label
%\pgfmathsetmacro\ang{atan(0.44)} % angle between x and x' axes
\def\axes{
\pgfmathsetmacro\d{\xmax/(\Nlines+0.4)} % grid size
\pgfmathsetmacro\D{\d/cos(\ang)/sqrt(1-tan(\ang)^2)} % grid size, boosted
\pgfmathsetmacro\ymax{\xmax+\DNy*\d} % maximum of y = ct axis
\pgfmathsetmacro\xmaxp{(\xmax/\d+\DNxp)*\D} % maximum of x' axis
\pgfmathsetmacro\ymaxp{(\xmax/\d+\DNyp)*\D} % maximum of y' = ct' axis
\pgfmathsetmacro\Nylines{\Nlines+\DNy} % number of world lines at constant ct'
\pgfmathsetmacro\Nxplines{\Nlines+\DNxp} % number of world lines at constant x'
\pgfmathsetmacro\Nyplines{\Nlines+\DNyp} % number of world lines at constant ct'
\coordinate (O) at (0,0);
\coordinate (X) at (\xmax+0.15,0);
\coordinate (T) at (0,\ymax+0.15);
\coordinate (X') at (\ang:\xmaxp+0.2);
\coordinate (T') at (90-\ang:\ymaxp+0.2);
% FILL
\begin{pgfonlayer}{back} % draw on back
\fill[myfieldred]
(\ang:-\xmin) -- (\ang:\xmaxp) --++ (90-\ang:\ymaxp) --++ (\ang:-\xmaxp)
-- (90-\ang:-\xmin) -- cycle;
\end{pgfonlayer}
% WORLD LINE GRID
\message{ Making world lines...^^J}
\foreach \i [evaluate={\x=\i*\d;}] in {1,...,\Nlines}{
\draw[world line] (\x,0) -- (\x,\ymax);
}
\foreach \i [evaluate={\t=\i*\d;}] in {1,...,\Nylines}{
\draw[world line t] (0,\t) -- (\xmax,\t);
}
% BOOSTED WORLD LINE GRID
\foreach \i [evaluate={\x=\i*\D;}] in {1,...,\Nxplines}{
\draw[world line'] (\ang:\x) --++ (90-\ang:\ymaxp);
}
\foreach \i [evaluate={\t=\i*\D;}] in {1,...,\Nyplines}{
\draw[world line'] (90-\ang:\t) --++ (\ang:\xmaxp);
}
% AXES
\draw[->,thick] (0,-\xmin) -- (T) node[left=-1] {$ct$};
\draw[->,thick] (-\xmin,0) -- (X) node[below=0] {$x$};
\draw[->,thick,mydarkred] (90-\ang:-\xmin) -- (T')
node[right=5,above=-1] {$ct'$};
\draw[->,thick,mydarkred] (\ang:-\xmin) -- (X')
node[anchor=\xplabelang,inner sep=2] {$x'$};
}