如何从atan转换成atan2?
How to convert from atan to atan2?
在Python中,如果想从 atan() 函数中创建 atan2() 的效果,应该怎么做?例如,如果我有笛卡尔坐标 (x, y) 并且想使用 atan() 函数找到 (x, y) 的反正切,这样它在所有象限中都有效,那么不管 x 或 y 的符号如何,我可以在不使用 atan2() 函数的情况下执行此操作吗?在笛卡尔和极坐标之间转换的例子中:
def cartopol(x, y):
r = (x**2 + y**2)**0.5
p = math.atan(y/x)
return(r,p)
这个以弧度为单位返回正确角度的公式目前不能使用 atan() 函数,所以必须改变什么?
简而言之,math.atan
仅适用于象限 1 和 4。对于象限 2 和 3(即对于 x < 0),则必须加上或减去 pi(180 度)以到达象限 1 和 4 并找到各自的 theta 值。在代码中,它意味着
if (y < 0 and x < 0):
print(math.atan(y/x) - math.pi)
elif (y > 0 and x < 0):
print(math.atan(y/x) + math.pi)
如需更多参考,请查看 atan2
。其他两个用例是 x > 0
,与 atan
.
配合使用效果很好
在Python中,如果想从 atan() 函数中创建 atan2() 的效果,应该怎么做?例如,如果我有笛卡尔坐标 (x, y) 并且想使用 atan() 函数找到 (x, y) 的反正切,这样它在所有象限中都有效,那么不管 x 或 y 的符号如何,我可以在不使用 atan2() 函数的情况下执行此操作吗?在笛卡尔和极坐标之间转换的例子中:
def cartopol(x, y):
r = (x**2 + y**2)**0.5
p = math.atan(y/x)
return(r,p)
这个以弧度为单位返回正确角度的公式目前不能使用 atan() 函数,所以必须改变什么?
简而言之,math.atan
仅适用于象限 1 和 4。对于象限 2 和 3(即对于 x < 0),则必须加上或减去 pi(180 度)以到达象限 1 和 4 并找到各自的 theta 值。在代码中,它意味着
if (y < 0 and x < 0):
print(math.atan(y/x) - math.pi)
elif (y > 0 and x < 0):
print(math.atan(y/x) + math.pi)
如需更多参考,请查看 atan2
。其他两个用例是 x > 0
,与 atan
.