#[inline]
pub fn cartesian_to_polar(x: f64, y: f64) -> (f64, f64) {
let rho = x.hypot(y);
let phi = y.atan2(x);
(rho, phi)
}
#[inline]
pub fn polar_to_cartesian(rho: f64, phi: f64) -> (f64, f64) {
let x = rho * phi.cos();
let y = rho * phi.sin();
(x, y)
}
#[inline]
pub fn cartesian_to_cylindrical(x: f64, y: f64, z: f64) -> (f64, f64, f64) {
let (rho, phi) = cartesian_to_polar(x, y);
(rho, phi, z)
}
#[inline]
#[allow(dead_code)]
pub fn cylindrical_to_cartesian(rho: f64, phi: f64, z: f64) -> (f64, f64, f64) {
let (x, y) = polar_to_cartesian(rho, phi);
(x, y, z)
}