249 lines
9.1 KiB
TeX
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'$};
|
|
} |