X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fcartesian.cc;h=3288f68e9859b72ad4dfe2a4650efc37318c927d;hb=eb26cb346a3931ff20f56418d32f522831b2cf28;hp=def1786c3ee89e91e8fdbf5ee8e49345642656e4;hpb=8770c4668da959d12bab83c4109dbfed9ee8cc61;p=ardour.git diff --git a/libs/pbd/cartesian.cc b/libs/pbd/cartesian.cc index def1786c3e..3288f68e98 100644 --- a/libs/pbd/cartesian.cc +++ b/libs/pbd/cartesian.cc @@ -28,7 +28,7 @@ PBD::spherical_to_cartesian (double azi, double ele, double len, double& x, doub /* convert from cylindrical coordinates in degrees to cartesian */ static const double atorad = 2.0 * M_PI / 360.0 ; - + if (len == 0.0) { len = 1.0; } @@ -38,16 +38,15 @@ PBD::spherical_to_cartesian (double azi, double ele, double len, double& x, doub z = len * sin (ele * atorad); } -void +void PBD::cartesian_to_spherical (double x, double y, double z, double& azimuth, double& elevation, double& length) { -#if 1 /* converts cartesian coordinates to cylindrical in degrees*/ double rho, theta, phi; rho = sqrt (x*x + y*y + z*z); - phi = acos (1.0/rho); + //phi = acos (1.0 / rho); theta = atan2 (y, x); /* XXX for now, clamp phi to zero */ @@ -65,48 +64,7 @@ PBD::cartesian_to_spherical (double x, double y, double z, double& azimuth, doub } else { elevation = 180.0 * (phi / M_PI); } - - length = rho; -#else - /* converts cartesian coordinates to cylindrical in degrees*/ - const double atorad = 2.0 * M_PI / 360.0; - double atan_y_per_x, atan_x_pl_y_per_z; - double distance; - - if (x == 0.0) { - atan_y_per_x = M_PI / 2; - } else { - atan_y_per_x = atan2 (y,x); - } - - if (y < 0.0) { - /* below x-axis: atan2 returns 0 .. -PI (negative) so convert to degrees and ADD to 180 */ - azimuth = 180.0 + (atan_y_per_x / (M_PI/180.0) + 180.0); - } else { - /* above x-axis: atan2 returns 0 .. +PI so convert to degrees */ - azimuth = atan_y_per_x / atorad; - } - - distance = sqrt (x*x + y*y); - - if (z == 0.0) { - atan_x_pl_y_per_z = 0.0; - } else { - atan_x_pl_y_per_z = atan2 (z,distance); - } - - if (distance == 0.0) { - if (z < 0.0) { - atan_x_pl_y_per_z = -M_PI/2.0; - } else if (z > 0.0) { - atan_x_pl_y_per_z = M_PI/2.0; - } - } - - elevation = atan_x_pl_y_per_z / atorad; - - // distance = sqrtf (x*x + y*y + z*z); -#endif + length = rho; }