# Recreating diffraction image with TikZ

I'd like to recreate the image below of an electron beam passing through -- and being diffracted by -- a carbon target onto a curved screen using TikZ. Unfortunately it looks a bit beyond my skill level. How could I recreate this?

• Go to texdoc.net and search for pst-optic. Look at the manual first then look at the examples. These are being done with pstricks. Also for tikz tex.stackexchange.com/questions/33460/tikz-library-for-optics To construct convex lenshttp://tex.stackexchange.com/questions/180704/tikz-how-to-make-a-convex-lens Commented Mar 26, 2015 at 22:34
• Next to the pst-optic package, you may like to check out the pst-optexp package. Commented Mar 27, 2015 at 7:30
• Welcome to TeX.SX. Questions about how to draw specific graphics that just post an image of the desired result are really not reasonable questions to ask on the site. Please post a minimal compilable document showing that you've tried to produce the image and then people will be happy to help you with any specific problems you may have. See minimal working example (MWE) for what needs to go into such a document. Commented Mar 27, 2015 at 20:56

Here's an attempt from the procrastination team in Metapost. It actually turned out to be quite an nice diagram to draw; you just need to specify ell and theta and the radius of the screen as a proportion of ell and the program calculates the other angle required, using a combination of sind, angle and the Pythagorean subtraction operator +-+.

I was not sure how to represent what appear to be diffraction patterns on the OP screen, so I left them out. The pink lines are just to show the construction and should be removed from a final version. Enjoy!

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);
% parameters
theta = 5;
ell = 10cm;
R   = 0.42 ell;

% calculate alpha
h = (ell-R)*sind(2theta);
alpha = 2theta + angle (R+-+h,h);

% define paths
path target, screen, a[];
target = unitsquare shifted -(.5,.5) xscaled 3 yscaled 12 shifted (R-ell,0);
screen = (R,0) rotated -1.1 alpha .. (R,0){up} .. (R,0) rotated 1.1 alpha;

% draw the various guides
drawoptions(withcolor .7 white);
draw (R-ell-1cm,0) -- (R+1cm,0) dashed dashpattern(on 40 off 6 on 8 off 6);
draw (R-ell,0) -- (R-ell,-2.5cm);
draw (R    ,0) -- (R    ,-2.5cm);
a1 = (R-ell,-2.2cm) -- (R, -2.2cm);
picture t; t = thelabel(btex $\ell$ etex,point 1/2 of a1);
drawdblarrow a1; unfill bbox t; draw t;

% draw the gubbins around the carbon target
drawoptions(withpen pencircle scaled 2);
draw (4 left -- right) scaled 4 shifted center target shifted 10 up;
draw (4 left -- right) scaled 4 shifted center target shifted 10 down;
drawoptions();
draw (up--down) scaled 10 shifted center target;
fill target;

% and the screen
draw screen withpen pencircle scaled 2;
draw screen withpen pencircle scaled 1.2 withcolor background;

drawarrow (20 left -- origin) shifted point 3.5 of target;
drawarrow center target -- (R-1,0) rotated alpha;
drawarrow center target -- (R-1,0) rotated -alpha;

% mark the beam angle
a2 = ((R,0) {up} .. (R,0) rotated(2 theta)) shifted (R-ell,0);
ahlength := 3; ahangle := 30;
drawdblarrow a2 withcolor .7 white;
label.rt(btex $2\theta$ etex, point .5 of a2) withcolor .7 white;

label(btex Screen etex, point 1.6 of screen + 20 right);
label(btex Carbon target etex, center target + 24 up);

% this bit is just to show the construction, and should be deleted...
drawoptions(withcolor .7[red,white]);
fill fullcircle scaled 3;
draw subpath(-1,1) of fullcircle scaled 2R;
draw origin -- (R,0) rotated alpha;
label(btex $\alpha$ etex, 25 right rotated 1/2 alpha);
%---------------------------------------------------------

endfig;
end.