I wish to generate a surface intensity plot of an Airy disk (or perhaps a two-dimensional Gaussian approximation to an Airy disk) on an (x, y)-plane at a specified coordinate. The hope is to have something like this: http://en.wikipedia.org/wiki/File:Airy-3d.svg with solid surface coloration. I am OK with a decent mesh approximation of a representative curve.

Is there a built in method of generating these sorts of intensity plots and treating them like Graphics3D objects that can be translated and placed as desired?


2 Answers 2


RevolutionPlot3D is a good tool for handling this question. The Airy function is given by

airy[r_?NumericQ, β_?NumericQ] := ((1 - E^(-(2/β^2))) BesselJ[1, (2 π r)/β]^2)/(π r^2 β^2)

Because 3D plotting is much slower, before proceeding to 3D, I recommend making a 2D plot to check that the parameter β has been chosen to give a good looking curve.

Plot[airy[r, 1.], {r, 0, 1.5}, AspectRatio -> Automatic, PlotRange -> All]


Because the revolution will be made about the z-axis, the arguments from the 2D plot can be transferred directly. To get the right look, it is necessary to adjust some the display options away from their default values.

plot = RevolutionPlot3D[airy[r, 1.], {r, 0, 1.5},
  Boxed -> False,
  BoxRatios -> {1, 1, 1},
  Axes -> None,
  PlotRange -> All,
  Mesh -> 20,
  PlotPoints -> 100,
  Lighting -> {{"Ambient", White}}]


A fine witches hat for Halloween.

To extract the polygons used to draw the RevolutionPlot3D, you can use kguler's function getVrtxCoords from this answer. Here is what you will get

polygons = Polygon@getVrtxCoords[plot, {Polygon}];



The plot referenced can be done with Plot3D. I grabbed the intensity profile from the wiki page

s[x_,y_]:=Sqrt[(x-x0)^2 + (y-y0)^2]
Plot3D[(2 BesselJ[1, s[x,y]]/s[x,y])^2,
  {x, -10, 10}, {y, -10, 10}, PlotRange -> All,
  ColorFunction -> "BlueGreenYellow"]

Airy disk

I wasn't sure about what you meant by translating and placing, so you may have to redefine s[x,y] according its definition

k a Sin[θ] == s[x,y,z]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.