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?

enter image description here

  • 1
    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 Mar 26, 2015 at 22:34
  • Next to the pst-optic package, you may like to check out the pst-optexp package.
    – Malipivo
    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.
    – henry
    Mar 27, 2015 at 20:56

1 Answer 1


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!

enter image description here

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

% 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;
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;

% add some beam arrows
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;

% add labels
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);


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .