Осциллирующая пружина с 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()

person TAYO    schedule 12.10.2020    source источник


Ответы (1)


Вы не предусмотрели демпфирование в последнем параметре вызова:

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

Так что он будет колебаться вечно. Поместите некоторое количество демпфирования, и оно должно замедлиться.

person pygri    schedule 12.10.2020
comment
благодарю вас. Я смог добавить некоторое значение для демпфирования, и через некоторое время оно прекратилось. Большое спасибо. - person TAYO; 13.10.2020
comment
@TAYO круто, если ответ был полезен, пожалуйста, примите его meta.stackexchange.com/questions/5234/ - person pygri; 14.10.2020