在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()函数时不起作用,因此必须进行哪些更改?
发布于 2020-10-21 22:40:56
简而言之,math.atan只适用于象限1和象限4。对于象限2和象限3(即x< 0),你必须加减π(180度)才能得到象限1和象限4,并找到相应的θ值。在代码中,这意味着
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。另外两个用例是与atan配合良好的x > 0。
https://stackoverflow.com/questions/64463152
复制相似问题