#!/bin/bash
set -eu
DIR="animate"
FILE="EM-Wave"
NUM=0
rm -f ${DIR}/frame???.png
for ANG in $(seq 0 0.05 1.5) ; do
echo "Creating frame $NUM ..."
POS=$ANG
echo $POS $ANG
sed -i "s/\\\def\\\myt{.\+}/\\\def\\\myt{$POS}/" ${FILE}.tex
pdflatex -shell-escape ${FILE}.tex 1> /dev/null
echo "Convert to png ..."
NUMSTR=$(printf "%03d" $NUM)
convert -density 200 ${FILE}.svg -shave 3 ${DIR}/frame${NUMSTR}.png
NUM=$(($NUM+1))
done
cd $DIR
convert -delay 10 -loop 10000 frame*.png ${FILE}.gif
cd -
\documentclass[crop,border=15,tikz,convert={outext=.svg,command=\unexpanded{pdf2svg
\infile\space\outfile}},multi=false]{standalone}
\usepackage{tikz-3dplot}
\def\myt{0.5}
\def\mypi{3.141592653589793}
\tdplotsetmaincoords{70}{120}
\begin{document}
\begin{tikzpicture}[>=latex,scale=1,tdplot_main_coords]
\fill[white] (-4,-4.75,-5.5) rectangle (-4,4.5,3.25);
\draw[->] (0,0,0) -- (3,0,0) node[anchor=north east]{$z$};
\draw[->] (0,-1,0) -- (0,5.5,0) node[anchor=north west]{$x$};
\draw[->] (0,0,0) -- (0,0,3) node[anchor=south]{$y$};
\tdplotsetrotatedcoords{0}{90}{90}
\draw[thick,blue,smooth,domain=-1:5,samples=200,tdplot_rotated_coords] plot
function {2*sin(4*(x-\myt))};
\tdplotsetrotatedcoords{0}{0}{90}
\draw[thick,red,smooth,domain=-1:5,samples=200,tdplot_rotated_coords] plot
function {-2*sin(4*(x-\myt))};
%\tdplotsetrotatedcoords{0}{0}{0}
\foreach \a in {-1,-0.9,...,5}{
\def\E{{2*sin(4*180/\mypi*(\a-\myt))}}
\draw[blue] (0,\a,0) -- (0,\a,\E);
\draw[red] (0,\a,0) -- (\E,\a,0);
}
\draw[ultra thick,blue,->,tips=proper] (0,5,0) --
(0,5,{2*sin(4*180/\mypi*(5-\myt))}) node[anchor=west]{$\vec{E}$};
\draw[ultra thick,red,->,tips=proper] (0,5,0) --
({2*sin(4*180/\mypi*(5-\myt))},5,0) node[anchor=north west]{$\vec{B}$};
\end{tikzpicture}
\end{document}