用Pymunk振荡弹簧

问题描述

我正在尝试创建一个带有摆动的弦和质量的摆锤,预计该摆锤会摆动一段时间,然后停止。从我写的内容来看,群众无法停止摆动。请帮我。

    import pyglet
    import pymunk
    import chipmunk
    from pymunk import Vec2d
    from pymunk.pyglet_util import DrawOptions

    window = pyglet.window.Window(1300,700,"Oscillation",resizable=False)# 
    W,H
    options=DrawOptions()

    space=pymunk.Space()
    space.gravity= 0,-100




    b0= space.static_body
    p0= 100,200


    body= pymunk.Body(mass=0.5,moment =1)
    body.position = (100,50)
    circle= pymunk.Circle(body,radius=20)

    joint= pymunk.constraint.dampedSpring(b0,body,p0,(0,0),100,10,0)
    space.add(body,circle,joint)

    @window.event
    def on_draw():
    window.clear()
    space.debug_draw(options)

    def update(dt):
    space.step(dt)

    if __name__=="__main__":
    pyglet.clock.schedule_interval(update,1.0/60)
    pyglet.app.run()

解决方法

您未在通话的最后一个参数中提供阻尼:

joint= pymunk.constraint.DampedSpring(b0,body,p0,(0,0),100,10,0)

因此它将永远振荡。放一些阻尼,它会减慢速度。