1

要获得球面坐标(theta、phi 和 alpha),我使用以下代码:

double phi_rad = atan2f(z,sqrt((x*x)+(y*y)));
double theta_rad = atan2f(y, x);
double r = sqrt((x*x)+(y*y)+(z*z));

并将 theta 映射到 0-360 度,我使用以下代码:

double theta_deg = (theta_rad/M_PI*180) + (theta_rad > 0 ? 0 : 360);

但是我如何将 phi 映射到 0-360 度?我尝试了与用于 theta_deg 相同的原理,但它并没有很好地工作。

4

1 回答 1

0

如果 phi 是您的方位角(0 到 2π)并且 theta 是您的极角(0 到 π),您可以这样做:

double phi_rad = atan2(y,x);
double theta_rad = acos(z);

然后你可以使用标准从弧度转换为度数:

double rad2deg(double rad)
{
    return rad * 180.0 / M_PI;
}
于 2013-12-13T11:01:49.123 回答