I'm trying to plot a function of the form $z(r,\theta)$ where $r \in [0, R]$ for a finite R, $\theta \in [0,2\pi[$, and z is the third coordinate, a function of the first two. I couldn't find anything to do it natively, so I went back to Cartesian coordinates. But the result does not satisfy me, because the range of x is a function of y, a consequence of the constraint $ x^2+y^2 < R^2$. Is there already something in Mathematica to handle this kind of plot?
$\begingroup$
$\endgroup$
Do it parametrically. Here's a generic implementation:
cylinderPlot3D[f_, {rMin_, rMax_}, {tMin_, tMax_}, opts___] :=
ParametricPlot3D[{r Cos[t], r Sin[t], f[r, t]}, {r, rMin, rMax}, {t, tMin, tMax}, opts]
For example,
f[r_, t_] := r^2 Cos[3 t]];
cylinderPlot3D[f, {0, 1}, {0, 2 Pi}, Mesh->None, Boxed->False]
$\begingroup$
$\endgroup$
Use
RevolutionPlot3D[ f[r,t], {r, rmax, rmin}, {t, tmax, tmin}]
RevolutionPlot3D
when $z$ does vary with $\theta$? $\endgroup$ – whuber Feb 5 '13 at 16:26RevolutionPlot[]
for the purpose. Witness for instanceRevolutionPlot3D[r^2 Cos[3 t], {r, 0, 1}, {t, 0, 3 π/2}]
. Of course, it's more enlightening to useParametricPlot3D[]
instead, as in your answer. $\endgroup$ – J. M.'s ennui♦ Feb 7 '13 at 3:12