Surfaces in 3D parameterized in cylindrical coordinates

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.


plot::Cylindrical([r, ϕ, z], u = umin .. umax, v = vmin .. vmax, <a = amin .. amax>, options)


plot::Cylindrical creates surfaces parametrized in cylindrical coordinates.

The surface given by a mapping (“parametrization”) is the set of all image points

in cylindrical coordinates, which translate to the usual “Cartesian” coordinates as


r is referred to as “radius,” ϕ as “polar angle,” and z as the “height” of a point.

The functions r, ϕ, z are evaluated on a regular equidistant mesh of sample points in the u-v plane. This mesh is determined by the attributes UMesh, VMesh. By default, the attribute AdaptiveMesh = 0 is set, i.e., no adaptive refinement of the equidistant mesh is used.

If the standard mesh does not suffice to produce a sufficiently detailed plot, one may either increase the value of UMesh, VMesh or USubmesh, VSubmesh,or set AdaptiveMesh = n with some (small) positive integer n. If necessary, up to 2n - 1 additional points are placed in each direction of the u-v plane between adjacent points of the initial equidistant mesh. Cf.  Example 2.

“Coordinate lines” (“parameter lines”) are curves on the surface.

The phrase “ULines” refers to the curves (r(u, v0), ϕ(u, v0), z(u, v0)) with the parameter u running from umin to umax, while v0 is some fixed value from the interval [vmin, vmax].

The phrase “VLines” refers to the curves (r(u0, v), ϕ(u0, v), z(u0, v)) with the parameter v running from vmin to vmax, while u0 is some fixed value from the interval [umin, umax].

By default, the parameter curves are visible. They may be switched off by specifying ULinesVisible = FALSE and VLinesVisible = FALSE, respectively.

The coordinate lines controlled by ULinesVisible = TRUE/FALSE and VLinesVisible = TRUE/FALSE indicate the equidistant mesh in the u-v plane set via the UMesh, VMesh attributes. If the mesh is refined by the USubmesh, VSubmesh attributes, or by the adaptive mechanism controlled by AdaptiveMesh = n, no additional parameter lines are drawn.

As far as the numerical approximation of the surface is concerned, the settings

UMesh = nu, VMesh = nv, USubmesh = mu, VSubmesh = mv


UMesh = (nu - 1) (mu + 1) + 1, VMesh = (nv - 1) (mv + 1) + 1,

USubmesh = 0, VSubmesh = 0

are equivalent. However, in the first setting, nu parameter lines are visible in the u direction, while in the latter setting (nu - 1) (mu + 1) + 1 parameter lines are visible. Cf. Example 2.

Use Filled = FALSE to obtain a wireframe representation of the surface.

If the expressions/functions r and/or z contain singularities, it is recommended (but not strictly necessary) to use the attribute ViewingBox to set a suitable viewing box. No such precautions are necessary for ϕ, although singularities in this function may result in poorly rendered surfaces – in many cases setting the attributes Mesh and/or AdaptiveMesh to higher values will help. Cf. Example 3.


AttributePurposeDefault Value
AdaptiveMeshadaptive sampling0
AffectViewingBoxinfluence of objects on the ViewingBox of a sceneTRUE
Colorthe main colorRGB::Red
Filledfilled or transparent areas and surfacesTRUE
FillColorcolor of areas and surfacesRGB::Red
FillColor2second color of areas and surfaces for color blendsRGB::CornflowerBlue
FillColorTypesurface filling typesDichromatic
FillColorFunctionfunctional area/surface coloring 
FillColorDirectionthe direction of color transitions on surfaces[0, 0, 1]
FillColorDirectionXx-component of the direction of color transitions on surfaces0
FillColorDirectionYy-component of the direction of color transitions on surfaces0
FillColorDirectionZz-component of the direction of color transitions on surfaces1
Framesthe number of frames in an animation50
Legendmakes a legend entry 
LegendTextshort explanatory text for legend 
LegendEntryadd this object to the legend?TRUE
LineColorcolor of linesRGB::Black.[0.25]
LineWidthwidth of lines0.35
LineColor2color of linesRGB::DeepPink
LineStylesolid, dashed or dotted lines?Solid
LineColorTypeline coloring typesFlat
LineColorFunctionfunctional line coloring 
LineColorDirectionthe direction of color transitions on lines[0, 0, 1]
LineColorDirectionXx-component of the direction of color transitions on lines0
LineColorDirectionYy-component of the direction of color transitions on lines0
LineColorDirectionZz-component of the direction of color transitions on lines1
Meshnumber of sample points[25, 25]
MeshVisiblevisibility of irregular mesh lines in 3DFALSE
Namethe name of a plot object (for browser and legend) 
ParameterEndend value of the animation parameter 
ParameterNamename of the animation parameter 
ParameterBegininitial value of the animation parameter 
ParameterRangerange of the animation parameter 
PointSizethe size of points1.5
PointStylethe presentation style of pointsFilledCircles
PointsVisiblevisibility of mesh pointsFALSE
Submeshdensity of submesh (additional sample points)[0, 0]
TimeEndend time of the animation10.0
TimeBeginstart time of the animation0.0
TimeRangethe real time span of an animation0.0 .. 10.0
Titleobject title 
TitleFontfont of object titles[" sans-serif ", 11]
TitlePositionposition of object titles 
TitleAlignmenthorizontal alignment of titles w.r.t. their coordinatesCenter
TitlePositionXposition of object titles, x component 
TitlePositionYposition of object titles, y component 
TitlePositionZposition of object titles, z component 
ULinesVisiblevisibility of parameter lines (u lines)TRUE
UMaxfinal value of parameter “u” 
UMeshnumber of sample points for parameter “u”25
UMininitial value of parameter “u” 
UNamename of parameter “u” 
URangerange of parameter “u” 
USubmeshdensity of additional sample points for parameter “u”0
VLinesVisiblevisibility of parameter lines (v lines)TRUE
VMaxfinal value of parameter “v” 
VMeshnumber of sample points for parameter “v”25
VMininitial value of parameter “v” 
VNamename of parameter “v” 
VRangerange of parameter “v” 
VSubmeshdensity of additional sample points for parameter “v”0
VisibleAfterobject visible after this time value 
VisibleBeforeobject visible until this time value 
VisibleFromToobject visible during this time range 
VisibleAfterEndobject visible after its animation time ended?TRUE
VisibleBeforeBeginobject visible before its animation time starts?TRUE
XContourscontour lines at constant x values[]
XFunctionfunction for x values 
YContourscontour lines at constant y values[]
YFunctionfunction for y values 
ZContourscontour lines at constant z values[]
ZFunctionfunction for z values 


Example 1

Using a constant radius for plot::Cylindrical, with the other two functions straight from the surface parameters, results in a right cylinder. This explains the name “cylindrical coordinates”:

plot(plot::Cylindrical([1, phi, z], phi = 0..2*PI, z = -1..1))

Other straightforward examples include cones and paraboloids of revolution:

plot(plot::Cylindrical([r, phi, 2*r], r = 0..1, phi = 0..2*PI))

plot(plot::Cylindrical([r, phi, r^2], r = 0..1, phi = 0..2*PI))

Example 2

Cylindrical surfaces are drawn from evaluations on an equidistant mesh of points. In some cases, the default mesh density is insufficient or otherwise inappropriate:

plot(plot::Cylindrical([cos(phi^2), phi, z],
                       phi=-2.8..2.8, z=0..1/2))

One possible change to this plot command is to explicitly set the mesh with the attribute Mesh. Note that this setting influences the density of parameter lines:

plot(plot::Cylindrical([cos(phi^2), phi, z],
                       phi=-2.8..2.8, z=0..1/2,
                       Mesh = [100, 5]))

To increase the mesh density without introducing additional parameter lines, you can use submesh settings:

plot(plot::Cylindrical([cos(phi^2), phi, z],
                       phi=-2.8..2.8, z=0..1/2,
                       VMesh = 5, USubmesh = 3))

Finally, we can also ask plot::Cylindrical to refine the mesh only in areas of higher curvature. In the following example, we allow for 23 = 8 additional points between each two neighboring points of the initial mesh:

plot(plot::Cylindrical([cos(phi^2), phi, z],
                       phi=-2.8..2.8, z=0..1/2,
                       VMesh = 5, AdaptiveMesh = 3))

Example 3

If the radius- or the z-function/expression contains singularities, plot::Cylindrical employs heuristic clipping to select a range to display:

plot(plot::Cylindrical([1/sqrt((phi - PI)^2 + z^2), phi, z],
                       phi = 0..2*PI, z = -1..1))

While these heuristics work well in many cases, there are also examples where they do not select a useful box:

plot(plot::Cylindrical([1/((phi - PI)^2 + z^2), phi, z],
                       phi = 0.. 2*PI, z = -1..1))

In these cases, the user should set the range to display explicitly:

plot(plot::Cylindrical([1/((phi - PI)^2+z^2), phi, z],
                       phi = 0..2*PI, z = -1..1),
     ViewingBox = [-2..0.3, -1.5..1.5, -1..1])

Example 4

Since the transformation from cylindrical to orthogonal coordinates is reversible (up to reducing the angle to the range [0, 2 π], it is possible to plot any surface with plot::Cylindrical (although this is probably more a curiosity than really useful):

trans := linalg::ogCoordTab[Cylindrical, InverseTransformation]:
cyl   := trans(x, y, sin(x^2+y^2))

plot(plot::Cylindrical(cyl, x = -2..2, y = -2..2))


r, ϕ, z

The coordinate functions: arithmetical expressions or piecewise objects depending on the surface parameters u, v and the animation parameter a. Alternatively, procedures that accept 2 input parameters u, v or 3 input parameters u, v, a and return a real numerical value when the input parameters are numerical.

r, ϕ, z are equivalent to the attributes XFunction, YFunction, ZFunction.


The first surface parameter: an identifier or an indexed identifier.

u is equivalent to the attributes UName, UMin, UMax.

umin .. umax

The plot range for the parameter u: umin, umax must be numerical real values or expressions of the animation parameter a.

umin .. umax is equivalent to the attributes URange, UMin, UMax.


The second surface parameter: an identifier or an indexed identifier.

v is equivalent to the attribute VName.

vmin .. vmax

The plot range for the parameter v: vmin, vmax must be numerical real values or expressions of the animation parameter a.

vmin .. vmax is equivalent to the attributes VRange, VMin, VMax.


Animation parameter, specified as a = amin..amax, where amin is the initial parameter value, and amax is the final parameter value.

See Also

MuPAD Functions

MuPAD Graphical Primitives