# `plot`::`Cylindrical`

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.

## Syntax

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

## Description

`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```

and

```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.

## Attributes

AttributePurposeDefault Value
`AdaptiveMesh`adaptive sampling`0`
`AffectViewingBox`influence of objects on the `ViewingBox` of a scene`TRUE`
`Color`the main color`RGB::Red`
`Filled`filled or transparent areas and surfaces`TRUE`
`FillColor`color of areas and surfaces`RGB::Red`
`FillColor2`second color of areas and surfaces for color blends`RGB::CornflowerBlue`
`FillColorType`surface filling types`Dichromatic`
`FillColorFunction`functional area/surface coloring
`FillColorDirection`the direction of color transitions on surfaces[`0`, `0`, `1`]
`FillColorDirectionX`x-component of the direction of color transitions on surfaces`0`
`FillColorDirectionY`y-component of the direction of color transitions on surfaces`0`
`FillColorDirectionZ`z-component of the direction of color transitions on surfaces`1`
`Frames`the number of frames in an animation`50`
`Legend`makes a legend entry
`LegendText`short explanatory text for legend
`LegendEntry`add this object to the legend?`TRUE`
`LineColor`color of lines`RGB::Black.[0.25]`
`LineWidth`width of lines`0.35`
`LineColor2`color of lines`RGB::DeepPink`
`LineStyle`solid, dashed or dotted lines?`Solid`
`LineColorType`line coloring types`Flat`
`LineColorFunction`functional line coloring
`LineColorDirection`the direction of color transitions on lines[`0`, `0`, `1`]
`LineColorDirectionX`x-component of the direction of color transitions on lines`0`
`LineColorDirectionY`y-component of the direction of color transitions on lines`0`
`LineColorDirectionZ`z-component of the direction of color transitions on lines`1`
`Mesh`number of sample points[`25`, `25`]
`MeshVisible`visibility of irregular mesh lines in 3D`FALSE`
`Name`the name of a plot object (for browser and legend)
`ParameterEnd`end value of the animation parameter
`ParameterName`name of the animation parameter
`ParameterBegin`initial value of the animation parameter
`ParameterRange`range of the animation parameter
`PointSize`the size of points`1.5`
`PointStyle`the presentation style of points`FilledCircles`
`PointsVisible`visibility of mesh points`FALSE`
`Submesh`density of submesh (additional sample points)[`0`, `0`]
`TimeEnd`end time of the animation`10.0`
`TimeBegin`start time of the animation`0.0`
`TimeRange`the real time span of an animation`0.0` .. `10.0`
`Title`object title
`TitleFont`font of object titles[`" sans-serif "`, `11`]
`TitlePosition`position of object titles
`TitleAlignment`horizontal alignment of titles w.r.t. their coordinates`Center`
`TitlePositionX`position of object titles, x component
`TitlePositionY`position of object titles, y component
`TitlePositionZ`position of object titles, z component
`ULinesVisible`visibility of parameter lines (u lines)`TRUE`
`UMax`final value of parameter “u”
`UMesh`number of sample points for parameter “u”`25`
`UMin`initial value of parameter “u”
`UName`name of parameter “u”
`URange`range of parameter “u”
`USubmesh`density of additional sample points for parameter “u”`0`
`VLinesVisible`visibility of parameter lines (v lines)`TRUE`
`VMax`final value of parameter “v”
`VMesh`number of sample points for parameter “v”`25`
`VMin`initial value of parameter “v”
`VName`name of parameter “v”
`VRange`range of parameter “v”
`VSubmesh`density of additional sample points for parameter “v”`0`
`Visible`visibility`TRUE`
`VisibleAfter`object visible after this time value
`VisibleBefore`object visible until this time value
`VisibleFromTo`object visible during this time range
`VisibleAfterEnd`object visible after its animation time ended?`TRUE`
`VisibleBeforeBegin`object visible before its animation time starts?`TRUE`
`XContours`contour lines at constant x values[]
`XFunction`function for x values
`YContours`contour lines at constant y values[]
`YFunction`function for y values
`ZContours`contour lines at constant z values[]
`ZFunction`function for z values

## Examples

### 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))` ## Parameters

 `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`. `u` 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`. `v` 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`. `a` Animation parameter, specified as `a```` = amin..amax```, where `amin` is the initial parameter value, and `amax` is the final parameter value.