试图结合球的质量

时间:2012-01-30 04:48:34

标签: python

我在尝试将质量纳入我的计划(特别是篮球的质量)时遇到了麻烦。

所以,首先,我使用一个方程来确定球的速度是什么,以便穿过篮筐(重力因素)。当我用重力运行我的程序时,它完全没有问题。

然而,当我尝试加入球的质量时,它完全错过了篮筐(当然,我认为这是可以预期的)。我只是不确定我是如何使用我的方程式的。如果我走在正确的轨道上,这里的任何人都可以清理吗?

rim = ring(pos= vector(-0.6,-0.7,0), radius = 0.46, axis= vector(0,1,0))

basketball = sphere(pos= vector(-4.9,-2,0), radius = 0.12, color = color.orange)
basketball.velocity = vector(4.53, 6.01, 0)

g = -9.8
timeStep = 0.005
basketball.mass = 0.623 #got this from the internet, in kg


for x in arange(0, 3, 0.005):
    basketball.velocity.y = basketball.velocity.y + (g/basketball.mass)*timeStep
    basketball.pos = basketball.pos+basketball.velocity*timeStep
    rate(100)

不要介意轮辋的位置,其位置背后的原因并不是0。我想我所要问的是,如果球的速度是正确的,那么球的质量是否正确地包含在程序中。如果没有,我可以采取哪些步骤使其正常工作?

3 个答案:

答案 0 :(得分:3)

如果你正在为你的程序的物理模型建模,你需要更清楚地思考你希望球的质量如何影响运动。简单地添加质量作为运动中的一个因素将不能准确表示物理因素(因为DSM在您的问题的评论中指出)质量与运动无关。你可以考虑其他一些东西,比如动量或动能,但我不确定你是否想要融入这种复杂性。

修改
一些建议 - 不要马上直接编写应用程序编码,并考虑如何首先建模物理。一旦弄明白,就可以开始编码了。

编辑2(编辑3 - 更正了最后一个等式)
如果您已将初始速度指定为vector(4.53, 6.01, 0),那么您可以考虑通过计算动能来改变质量将如何影响它。让我们假设你总是以固定能量 E 发射球。因此:

E = 0.5 * m * v^2:
2E/m = v^2

这意味着v与1/m^0.51/(square root of m)成比例。因此,新质量V的新发射速度M将为:

V = (m/M)^0.5 * v

举例说明:将质量增加原始质量的4倍将导致初始发射速度是前一发射速度的一半。

答案 1 :(得分:3)

篮球的质量已经被纳入常数9.8。这是基础物理学:

F = ma

所以要解决一个

a = F/m

重力由F = G m1 * m2 / r**2找到,其中G是引力常数。

如果m1是地球的质量而m2是篮球的质量,那么a = G * m1 * m2 / r**2 / m2 - 即m2取消,所以a = G * m1 * r**2,这意味着所有日常值为m2 ,一个是一样的! (地球也在篮球方面略微加速,但这个词通常被忽略了。)

G = 6.67300 * 10**-11 (gravitational constant)
m1 = 5.9736 * 10**24 (mass of earth in kg)
r = 6.371 * 10**6 (radius of earth in meters)

代入G * m1 / r**2给出:

>>> 6.673e-11 * 5.9736e24 / (6.371e6**2)
9.8206911462951823

QED

答案 2 :(得分:1)

您的速度单位不一致

g:m /(s ^ 2)
m:kg

(g/basketball.mass)*timeStep 

这将使单位:m /(kg.s)(不一致)

你可能需要研究一下运动方程

v = u + at

,其中 v =最终速度
u =初始速度
a =加速度,在你的情况下它将是g
t =施加恒定力的时间,因此在该段时间内保持g