However, to calculate the Plot3D, it takes too much running time.
You are probably talking about doing it like so:
intens[L_, d_, \[Lambda]_, x_] :=
1/(L^2 + (x - 0.5 d)^2) +
1/(L^2 + (x + 0.5 d)^2) + (2 Cos[
2 Pi Abs[
Sqrt[L^2 + (x - 0.5 d)^2] -
Sqrt[L^2 + (x + 0.5 d)^2]]/\[Lambda]])/(Sqrt[
L^2 + (x - 0.5 d)^2] Sqrt[L^2 + (x + 0.5 d)^2]);
Manipulate[
Plot3D[intens[L, d, \[Lambda], x], {x, -5, 5}, {L, 1, 3},
PlotRange -> All, PerformanceGoal -> "Quality", PlotPoints -> 40,
ImageSize -> Large, MeshFunctions -> {#3 &},
ColorFunction -> "TemperatureMap"],
{d, 10^-6, 3 10^-6}, {\[Lambda], 3 10^-7, 8 10^-7}]
Yes, generating such a Plot3D
within Manipulate
is painfully slow. But this is not very surprising, because a lot of calculation needs to be done. I do not know what you mean by:
Is there a way to make the body of revolution with a 2D image(eg. a triangle into a cone by rotation)?
One standard way if calculations need to be done faster is to use Compile
:
cIntens =
Compile[{{L, _Real}, {d, _Real}, {\[Lambda], _Real}, {x, _Real}},
Module[{pls, min, sqrpls, sqrmin},
pls = L^2 + (0.5` d + x)^2;
min = L^2 + (-0.5` d + x)^2;
sqrpls = Sqrt[pls];
sqrmin = Sqrt[min];
1/min + 1/pls + 2 Cos[2 Pi/\[Lambda] Abs[sqrmin - sqrpls]]/(sqrmin sqrpls)],
RuntimeOptions -> "Speed", CompilationTarget -> "C"];
Manipulate[
Plot3D[cIntens[L, d, \[Lambda], x], {x, -5, 5}, {L, 1, 3},
PlotRange -> All, PerformanceGoal -> "Quality", PlotPoints -> 40,
ImageSize -> Large, MeshFunctions -> {#3 &},
ColorFunction -> "TemperatureMap"],
{d, 10^-6, 3 10^-6}, {\[Lambda], 3 10^-7, 8 10^-7}]

This is still somewhat slow, but much better. If you do not have a C-compiler installed on you system, then just leaf the option CompilationTarget -> "C"
away.