What this converter does
This tool converts a point in 3D space from cylindrical coordinates (ρ, θ, z) into spherical coordinates (r, θ, φ). It is pure mathematics and applies everywhere — there are no region-specific rules. The tool follows the physics/ISO convention: θ is the azimuthal angle (rotation about the z-axis) and φ is the polar (inclination) angle measured from the +z axis.
The convention used
Cylindrical: ρ is the radial distance from the z-axis (ρ ≥ 0), θ is the azimuthal angle in the xy-plane, and z is the height. Spherical: r is the distance from the origin, θ is the same azimuthal angle (carried through unchanged), and φ is the angle down from the +z axis. Because r and φ depend only on ρ and z, the azimuthal angle θ never changes between the two systems.
How to use it
Enter ρ, θ and z, pick whether your angles are in degrees or radians, and choose the display precision. The output gives r, the unchanged θ, and the computed φ in the same angle unit you selected.
The formulas explained
The radial distance is found with the Pythagorean theorem in the plane containing the z-axis and the point: $$r = \sqrt{\rho^{2} + z^{2}}$$ The polar angle is $$\varphi = \operatorname{atan2}\!\left(\rho,\; z\right)$$ We use atan2 rather than \(\operatorname{atan}(\rho/z)\) so that \(z = 0\) gives exactly 90°, \(z < 0\) returns an angle greater than 90°, and the result always lies in \([0, \pi]\).
Worked example
For \(\rho = 3\), \(\theta = 60°\), \(z = 4\): $$r = \sqrt{9 + 16} = \sqrt{25} = 5$$ $$\varphi = \operatorname{atan2}(3, 4) = \operatorname{atan}(0.75) = 36.86989765°$$ θ stays 60°. So the spherical coordinates are \((5,\; 60°,\; 36.86989765°)\).
FAQ
Why does θ not change? Both systems measure the azimuthal angle the same way about the z-axis, so it simply carries through.
What happens when z = 0? The point lies in the xy-plane, so \(\varphi = 90°\) (\(\pi/2\)). atan2 handles this without dividing by zero.
What if ρ = 0 and z = 0? The point is the origin: \(r = 0\) and φ is mathematically undefined (the tool returns 0).