1
$\begingroup$

The problem is to plot the 3D Sinc function, but I cannot avoid the self-projection. I use the following code:

ω = 1; c = 1; L = 15;
f = Sinc[ω^2/c^2 ρ^2 + z^2];
Plot3D[f, {ρ, -L, L}, {z, -L, L}, PlotRange -> Full,PlotPoints -> 200, ColorFunction -> "Rainbow", Mesh -> None,PerformanceGoal -> "Quality", Exclusions -> None, Boxed -> False, ViewPoint -> {1.4, -2.0, 2}] 

In a 2D plot, the Sinc function is plotted smoothly without this problem. How can I fix it?

 DensityPlot[SBW, {ρ, -L, L}, {z, - L, L}, PlotRange -> Full,  PlotPoints -> pp, ColorFunction -> "Rainbow",  PerformanceGoal -> "Quality", Axes -> True, AxesLabel -> {x, y},  LabelStyle ->Directive[Black, 12], FrameTicks -> None, 
 Exclusions -> None]
$\endgroup$
  • 2
    $\begingroup$ You use two different terms, auto-replicas and self-projection, without any explanation of their meaning. Please edit your question to include an image of what you are looking at and provide more detail as to what is the problem. If possible, annotate the image to highlight the artifact to which you refer. $\endgroup$ – Bob Hanlon Sep 27 at 14:03
  • $\begingroup$ @BobHanlon Maybe it's aliasing-like Moiré effect one sees in a 3x3 grid. But I agree, the terms by themselves are vague. $\endgroup$ – Michael E2 Sep 27 at 14:51
  • $\begingroup$ Does SBW equal f? $\endgroup$ – Michael E2 Sep 27 at 15:30
2
$\begingroup$

The Moiré effect is exacerbated by the NormalsFunction. If you get rid the normals, the aliasing disappears around PlotPoints -> 800. With the normals, you probably have to go higher, doubling the plot points a few times perhaps. However, the plot below is already quite large and difficult to work with. It seems more sensible to me to reduce L to around 5 or so. The large expanse of tiny blue waves really shows me nothing I didn't already understand in L = 5.

Plot3D[f, {\[Rho], -L, L}, {z, -L, L}, PlotRange -> Full, 
 PlotPoints -> 800, ColorFunction -> "Rainbow", Mesh -> None, 
 NormalsFunction -> None,
 Exclusions -> None,  Boxed -> False, ViewPoint -> {1.4, -2.0, 2}]

enter image description here

The approach of @cvmgt seems smarter, and it doesn't have the trouble with the surface normals; however, (1) you still have to crank up PlotPoints to around 600 or more, depending on desired quality, and (2) assuming the test values for \[Omega] and c may vary, you'd have to use ParametricPlot3D to create a revolution plot with elliptical orbits. In any case, you end up with larger a plot, even if you set NormalsFunction to None.

| improve this answer | |
$\endgroup$
1
$\begingroup$

ω^2/c^2 ρ^2 + z^2=ρ^2 + z^2,so Sinc[ρ^2 + z^2] can be write by Sinc[t^2],t^2=ρ^2 + z^2,It means the graph is only depend on the distance from z-axis, so we can rotate Sinc by z-axis to get the plot.

RevolutionPlot3D[Sinc[t^2], {t, -25, 25}, ColorFunction -> "Rainbow", 
 Mesh -> None, PlotPoints -> 100, Boxed -> False, 
 ViewPoint -> {1.4, -2.0, 2}, 
 PlotRange -> {{-15, 15}, {-15, 15}, {-1, 1}}]

enter image description here

| improve this answer | |
$\endgroup$
  • $\begingroup$ Nice idea. It looks better if you raise PlotPoints. Of course it takes longer and takes up more memory. $\endgroup$ – Michael E2 Sep 27 at 18:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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