我正在尝试用pymunk库做一个逼真的物理模拟器。我的问题是图书馆中使用的单元。例如,如果我想为矢量力定义常数G,我该怎么做呢?我已经使用命令"space.gravity(0,- 9.81 )“测试了9.81,它下降得非常慢,我查看了pymunk的参考页面,但没有找到任何东西。
发布于 2021-10-31 13:25:09
Pymunk本身是无单元的,如下所述:http://www.pymunk.org/en/latest/overview.html#mass-weight-and-units
有时,Pymunk的用户可能会感到困惑,不知道一切都是用什么单位定义的。例如,物体的质量是克还是公斤?Pymunk是无单位的,并不关心您使用哪个单位。如果你以秒为单位传递给函数期望时间,那么你的时间单位就是秒。如果您将像素传递给期望距离的函数,则距离的单位是像素。
那么派生单元就是上述的组合。因此,在秒和像素的情况下,速度的单位是像素/秒。
(这与其他一些物理引擎形成了对比,这些引擎可以有您应该使用的固定单位)
为了验证这一点,我建议您做一个简单的测试。只要做一个质量为1的物体,让它下降1个单位的时间,用你的重力,然后检查答案:
>>> import pymunk
>>> s = pymunk.Space()
>>> s.gravity = 0,9.81
>>> b = pymunk.Body()
>>> c = pymunk.Circle(b, 1)
>>> c.mass = 1
>>> s.add(b,c)
>>> for x in range(10):
... s.step(0.1)
...
>>> b.position
Vec2d(0.0, 4.4145)
>>> b.velocity
Vec2d(0.0, 9.81)这与我在这里进行相同计算时得到的结果大致相同:https://www.translatorscafe.com/unit-converter/en-US/calculator/free-fall/ (小差异,因为pymunk是按步骤计算的,速度和位置分别更新)
https://stackoverflow.com/questions/69742417
复制相似问题