# discretize.utils.cylindrical_to_cartesian#

discretize.utils.cylindrical_to_cartesian(grid, vec=None)[source]#

Transform from cylindrical to cartesian coordinates.

Transform a grid or a vector from cylindrical coordinates $$(r, \theta, z)$$ to Cartesian coordinates $$(x, y, z)$$. $$\theta$$ is given in radians.

Parameters
grid(n, 3) array_like

Location points defined in cylindrical coordinates $$(r, \theta, z)$$.

vec(n, 3) array_like, optional

Vector defined in cylindrical coordinates $$(r, \theta, z)$$ at the locations grid. Will also except a flattend array in column major order with the same number of elements.

Returns
(n, 3) numpy.ndarray

If vec is None, this returns the transformed grid array, otherwise this is the transformed vec array.

Examples

Here, we convert a series of vectors in 3D space from cylindrical coordinates to Cartesian coordinates.

>>> from discretize.utils import cylindrical_to_cartesian
>>> import numpy as np


Construct original set of vectors in cylindrical coordinates

>>> r = np.ones(9)
>>> phi = np.linspace(0, 2*np.pi, 9)
>>> z = np.linspace(-4., 4., 9)
>>> u = np.c_[r, phi, z]
>>> u
array([[ 1.        ,  0.        , -4.        ],
[ 1.        ,  0.78539816, -3.        ],
[ 1.        ,  1.57079633, -2.        ],
[ 1.        ,  2.35619449, -1.        ],
[ 1.        ,  3.14159265,  0.        ],
[ 1.        ,  3.92699082,  1.        ],
[ 1.        ,  4.71238898,  2.        ],
[ 1.        ,  5.49778714,  3.        ],
[ 1.        ,  6.28318531,  4.        ]])


Create equivalent set of vectors in Cartesian coordinates

>>> v = cylindrical_to_cartesian(u)
>>> v
array([[ 1.00000000e+00,  0.00000000e+00, -4.00000000e+00],
[ 7.07106781e-01,  7.07106781e-01, -3.00000000e+00],
[ 6.12323400e-17,  1.00000000e+00, -2.00000000e+00],
[-7.07106781e-01,  7.07106781e-01, -1.00000000e+00],
[-1.00000000e+00,  1.22464680e-16,  0.00000000e+00],
[-7.07106781e-01, -7.07106781e-01,  1.00000000e+00],
[-1.83697020e-16, -1.00000000e+00,  2.00000000e+00],
[ 7.07106781e-01, -7.07106781e-01,  3.00000000e+00],
[ 1.00000000e+00, -2.44929360e-16,  4.00000000e+00]])