【问题标题】:Spherical coordinate conversion gives wrong polar angle球坐标转换给出错误的极角
【发布时间】:2017-02-23 10:08:06
【问题描述】:

这是我的转换代码

double xDif = point.getX() - origin.getX();
double yDif = point.getY() - origin.getY();
double zDif = point.getZ() - origin.getZ();
double radius = Math.sqrt((xDif * xDif) + (yDif * yDif) + (zDif * zDif));
double azimuthalAng = Math.acos(zDif / radius);
double polarAng = Math.atan(yDif / xDif);
return new SpherePoint(radius, azimuthalAng, polarAng);

原点 = 400、400、400

点 = 100、100、100

所以,向量 = -300, -300, -300

Math.toDegrees();

我的转换算法给出了与本网站http://keisan.casio.com/exec/system/1359533867相同的方位角和半径

但是网站给了我一个-135的极角,而我的算法给了45

谁能告诉我怎么了?

【问题讨论】:

    标签: coordinates coordinate-systems coordinate-transformation polar-coordinates spherical-coordinate


    【解决方案1】:

    atan() 无法返回正确的角度象限。您正在传递它yDif / xDif,即 -300 / -300 或 1,因此它将给出与 300 / 300 相同的值。

    大多数语言都有一个函数atan2(yDif, xDif),它会给出正确的值。它还将处理xDif为0的情况。

    【讨论】:

    • 非常感谢!我没有注意到那个错误!
    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多