【问题标题】:Applying forces at different points fails to create torque in pymunk在不同点施加力无法在 pymunk 中产生扭矩
【发布时间】:2012-12-07 01:56:09
【问题描述】:

我正在使用 pymunk 在其直径末端向圆形物体施加力。这些力的大小不同,并且都没有 x 分量(相对于身体,也就是说,它们垂直于直径)。我希望这些力一起在一定程度上旋转身体,但它们只是加在一起以创建一个没有 x 分量和 y 分量(因此,再次垂直于直径)的力矢量,这只是一个组合两种力量的大小。

pymunk 是否无法计算施加在身体不同点上的多个力的合成旋转?因为这是我什至使用物理引擎的唯一原因,如果是这样的话,我会非常失望。我将不胜感激有关此问题的任何帮助。提前谢谢你。

【问题讨论】:

    标签: physics chipmunk pymunk


    【解决方案1】:

    pymunk 应该能够计算旋转,除非我误解了这个问题。检查这个例子:

    >>> b = Body(1,100)
    >>> c = Circle(b,10)
    >>> s.add(b,c)
    >>> b.apply_impulse((100,0), (0,10))
    >>> b.apply_impulse((-50,0), (0,-10))
    >>> s.step(.1)
    >>> b.angle
    -1.5
    >>> b.position
    Vec2d(5.0, 0.0)
    >>> s.step(.1)
    >>> b.angle
    -3.0
    >>> b.position
    Vec2d(10.0, 0.0)
    

    【讨论】:

    • 但是如果我用一个力(100,0)的脉冲和另一个用力(50,0)的脉冲,圆会同时移动和转动吗?在我的模拟中,情况似乎并非如此,除非我的力应用有问​​题。我是否需要将每个力分解为其与世界相关的 x 和 y 分量?我认为我可以在圆直径的每一端施加每个力,当圆转动时,力将继续相对于身体施加(我计算每一步直径两端的位置)。跨度>
    • 我稍微更改了示例.. 但是如果您无法正常工作,那么我建议您创建一个最小示例并粘贴到此处
    • 啊,这个例子正好说明了我的问题。您对直径的末端施加不同的脉冲,但不是将身体推成一个圆圈,而是沿着 x 轴旋转和移动。它不应该以圆形模式移动,同时沿 x 轴和 y 轴移动吗?
    • 啊,现在我明白你认为应该发生什么了! :) 我认为它应该只在 x 中移动。看这里:physics.stackexchange.com/questions/29122/…
    • 我实际上在做的是不断地施加力并动态地改变它们,但你帮助我意识到出了什么问题。我确实修复了它,并且由于您在正确方向上的推动,我已经完成了与 pymunk 的工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2020-04-16
    • 2017-12-22
    相关资源
    最近更新 更多