我完全难以处理一些非常简单的事情。以下几行是一个更大的程序的一部分。东西和东西是网格上的两个对象,我需要找到它们之间相对于y轴的角度。 math.atan采用浮点数,我为什么需要输入对象之间的距离。
m_angle = math.degrees(math.atan(float(thing.position()[1]-stuff.position()[1]) / float(thing.position()[0]-stuff.position()[0])))
m_angle = math.degrees(math.atan(float(thing.position()[1]-stuff.position()[1]) / thing.position()[0]-stuff.position()[0]))
.position调用所有返回整数。
对于每一行,我在运行程序时会得到不同的结果。前两个应该返回完全相同的结果,一个浮点数。
我不明白的是,根据我是否运行第1行或第2行,我可能会得到不同的结果:/
这是模拟的一部分,
答案 0 :(得分:4)
难以以您正在编辑的速度回答,但是:
m_angle = math.degrees(math.atan(float(thing.position()[1]-stuff.position()[1]) / float(thing.position()[0]-stuff.position()[0])))
atan中的位相当于something/(a-b)
m_angle = math.degrees(math.atan(float(thing.position()[1]-stuff.position()[1]) / thing.position()[0]-stuff.position()[0]))
atan中的位相当于(something/a)-b
答案 1 :(得分:0)
为避免混淆,请使用
m_angle = math.atan2(thing.position()[1]-stuff.position()[1], thing.position()[0]-stuff.position()[0]);
m_angle = math.degrees(m_angle);
不包括分区,因此不需要整数到浮点转换。
如果角度在II中,这将给出与atan函数不同的正确角度。或者III。象限。 atan函数给出结果mod 180°,atan2函数mod 360°。根据应用程序的不同,其中一个可能是预期的结果。