gpt4 book ai didi

python - 基本触发 : math. atan() 问题

转载 作者:太空狗 更新时间:2023-10-30 00:30:22 26 4
gpt4 key购买 nike

我在一些基本的触发方面遇到了一些麻烦。我正在做一些数学作业,我终于厌倦了将直角坐标转换为极坐标,反之亦然,所以我决定编写一个小 Python 程序来帮助我进行转换。但是, Math.atan() 给我带来了一点麻烦。这是代码:

def rect_to_polar_input(x, y):
hypotenuse = math.sqrt((x * x) + (y * y))
tangent = float(y / x);
angle = round(math.degrees(math.atan(tangent)));

if x <= 0:
if(y >=0):
angle += 90

if(y <= 0):
angle+= 180

if x >= 0:
if(y<0):
angle+=270

return hypotenuse, angle

如果您想知道为什么我有那些笨拙的 if 语句,那是为直角坐标所在的象限添加正确的角度。象限 2 与象限 1 成 90 度角, 象限 3 与象限 1 成 180 度,等等。

现在,如果我输入像 (5, 5) 这样的值,一切都会按预期进行。但是,如果我输入 (-5, 5),我得到的值是 7.07, 45,我应该得到 7.07, 135 .如果我输入 (-5, -5),我得到的值是 7.07, 225,这是预期的。最后,如果我输入值 (5, -5),我仍然得到值 7.07, 225。我已经尝试了我能想到的一切,但它没有用。那么,我错过了什么?

最佳答案

你应该为此使用atan2。它完全按照您的需要处理象限。像这样:

def rect_to_polar_input(x, y):
hypotenuse = math.hypot(x, y)
angle = round(math.degrees(math.atan2(y, x)))
if angle<0:
angle += 360
return hypotenuse, angle

if 语句用于处理您希望结果在 0..360 范围内的事实,但是 atan2 给出的角度在 -180..180 范围内.

您可以使用您已采用的基本方法通过 atan 完成此操作,但您还没有完全调试它。无论如何,每个人都为此使用 atan2

此外,您也可以使用 hypot 而不是自己滚动。

关于python - 基本触发 : math. atan() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com