\documentclass[tikz,border=5pt]{standalone} \usepackage{amsmath} \usepackage{pgfplots} \pgfplotsset{compat=newest} \usetikzlibrary{fadings,shadings} \tikzfading[name=fade out, inner color=transparent!0, outer color=transparent!100] \pgfdeclareradialshading{atomshade}{ \pgfpoint{0cm}{0cm}} { color(0cm)=(pgftransparent!0); color(0.2cm)=(pgftransparent!20); color(0.5cm)=(pgftransparent!50); color(0.7cm)=(pgftransparent!70); color(1cm)=(pgftransparent!100) } \tikzset{atom/.style={circle, shading=atomshade, minimum size=1.0cm}} \begin{document} \begin{tikzpicture} % Settings for incoming wave \def\incomingWaveStart{-1.833} \def\incomingWaveEnd{-1.2165} \def\incomingArrowStart{-1.2165} \def\incomingArrowEnd{-1.0996} % Settings for scattered waves \def\scatteredWaveStart{0} \def\scatteredWaveEnd{0.633} \def\scatteredArrowStart{0.633} \def\scatteredArrowEnd{0.75} \def\oscillationAmplitude{0.1} \def\frequencyFactor{2.0e3} % General settings \def\atomRadius{0.55} % Radius of atom \def\waveLengthLabelPosX{-1.7} \def\waveLengthLabelPosY{0.0} \def\highlightAngle{135} \def\opacityHigh{1} \def\opacityLow{0.65} % Atom \node[atom=gray] (atom1) at (0,0) {}; % Oscillations \foreach \radius in {0.85, 0.95, 1.05, 1.15} { \draw[path fading=fade out, thick] (\radius cm - 0.20cm, 0.05cm) arc (15:75:\radius cm); \draw[path fading=fade out, thick] (-\radius cm + 0.20cm, -0.05cm) arc (195:255:\radius cm); } % Incoming x-ray wave \draw[black, variable=\x, samples=200, smooth, domain=\incomingWaveStart:\incomingWaveEnd] plot( \x, {-\oscillationAmplitude + \oscillationAmplitude * cos(\frequencyFactor*\x)} ); % Arrow segment at the end \draw[->, black, variable=\x, samples=20, smooth, domain=\incomingArrowStart:\incomingArrowEnd] plot( \x, -\oscillationAmplitude); \node [above] at (\waveLengthLabelPosX,\waveLengthLabelPosY) {$\lambda$}; % Emitted x-rays \foreach \angle in {95, \highlightAngle, 165, 275, 315, 350} { \pgfmathsetmacro{\startX}{\atomRadius * cos(\angle)} \pgfmathsetmacro{\startY}{\atomRadius * sin(\angle)} \pgfmathparse{\angle==\highlightAngle ? \opacityHigh : \opacityLow} \let\op\pgfmathresult % Wave packet \draw[black, opacity=\op, variable=\x, samples=200, smooth, domain=\scatteredWaveStart:\scatteredWaveEnd] plot({ \startX + \x * cos(\angle) - \oscillationAmplitude * sin(\frequencyFactor*\x)*sin(\angle) }, { \startY + \x * sin(\angle) + \oscillationAmplitude * sin(\frequencyFactor*\x) * cos(\angle) }); % Arrow at the end \draw[->, black, opacity=\op, variable=\x, samples=20, smooth, domain=\scatteredArrowStart:\scatteredArrowEnd] plot({ \startX + \x * cos(\angle) }, { \startY + \x * sin(\angle) }); } \node [left, opacity=\opacityLow] at (+95:1.1) {$\lambda$}; \end{tikzpicture} \end{document}