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}];
Graphics3D[polygons]
