又是我。我有没有提到我有多爱你们?我的教授说服我尝试 python,到目前为止我讨厌它,但我决定试一试。我使用 pygame 制作了一个简单的程序,它可以在屏幕上移动几个圆圈。我对其中的一些数学问题有疑问。我给了每个圆 (x, y) 坐标(圆心),并根据我希望它们移动的速度(每次移动的距离)计算了它们在屏幕上的偏移量(Dx, Dy)。这是我为 move 方法所做的:
def Move(self, speed):
Dx = self.qx * (speed * math.sin(math.degrees(90 - Alp)))
Dy = self.qy * (speed * math.sin(math.degrees(Alp)))
self.x += Dx
self.y += Dy
print "D = ", math.sqrt(Dx * Dx + Dy * Dy)
问题:我使用毕达哥拉斯定理根据速度计算 Dx 和 Dy,然后使用相同的定理在 print 语句中计算 D(实际速度),我应该得到一个等于输入速度的结果。但是,我得到的结果是:
D = 9.15180313227 (speed = 10)
结果各不相同,并不总是相同(我有随机值的测试方法),但它总是接近且错误的。我错过了什么?
注意:忽略 self.qy 和 self.qx,它们用于正确确定方向,它们的值是 1 或 -1