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]])