Edit and compile if you like:
\documentclass[border=3pt]{standalone}% Drawing\usepackage{tikz}% Tikz Library\usetikzlibrary{angles, quotes, shapes, decorations.markings, calc, arrows.meta}% Tikz Style%% Incident Ray\tikzset{ray/.style = {postaction=decorate,decoration={markings,mark=at position .5 with \arrow{stealth},mark=between positions 0.1 and 0.4 step 0.5cm with with{\draw[fill=red, draw=red] circle [radius=1pt];},mark=between positions 0.6 and 0.9 step 0.5cm with with{\draw[fill=red, draw = red] circle[radius=1pt];},mark=between positions 0.1 and 0.4 step 0.5cm with with{\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-7.5pt) -- (0,7.5pt);},mark=between positions 0.6 and 0.9 step 0.5cm with with{\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-7.5pt) -- (0,7.5pt);}}}}%% Reflected Ray\tikzset{polray/.style = {postaction=decorate,decoration={markings,mark=at position .52 with \arrow{stealth},mark=between positions 0.1 and 0.4 step 0.5cm with with{\draw[fill=red, draw=red] circle [radius=1pt];\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-6pt) -- (0,6pt);},mark=between positions 0.6 and 0.9 step 0.5cm with with{\draw[fill=red, draw = red] circle[radius=1pt];\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-6pt) -- (0,6pt);},}}}%% Refracted Ray\tikzset{polrayy/.style = {postaction=decorate,decoration={markings,mark=at position .52 with \arrow{stealth},mark=between positions 0.1 and 0.4 step 0.4cm with with{\draw[fill=red, draw=red] circle [radius=1pt];\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-6pt) -- (0,6pt);},mark=between positions 0.6 and 0.9 step 0.4cm with with{\draw[fill=red, draw = red] circle[radius=1pt];\draw[red, {Latex[length=1.3mm, width=1.5mm]}-{Latex[length=1.3mm, width=1.5mm]}] (0,-6pt) -- (0,6pt);},}
Click to download: reflection-refraction.tex
Open in Overleaf: reflection-refraction.tex
This file is available on GitHub.
See more on the author page of Alexandros Tsagkaropolulos.