Сочетается ли демпфирование тела с пространственным демпфированием в Pymunk?

Создание некоторых симуляций для проекта.

Мой вопрос: соединяется ли значение демпфирования тела со значением демпфирования пространства пимунка (если оно есть)?

Например, если у меня есть пространство pymunk, SPACE, с SPACE.damping = 0,9, а затем у меня есть тело, BODY, где я установил его метод BODY.update_velocity() на значение демпфирования 0,5, будет ли демпфирование BODY равным 0,9 *0,5 (или какой-то другой состав) или будет 0,5?

Дайте мне знать, если я могу сделать свой вопрос более ясным, и заранее спасибо.


person Skittles    schedule 12.06.2017    source источник


Ответы (1)


Демпфирование используется следующим образом:

  1. При переходе по пространству (space.step) используемое демпфирование рассчитывается как damping = pow(space.damping, dt)
  2. Затем он вызовет функцию скорости каждого тела в пространстве, передав расчетное демпфирование с шага 1 (чуть ниже расчета демпфирования на шаге 1).
  3. Функция скорости по умолчанию выполняет этот расчет, чтобы установить скорость: body.velocity = body.velocity * damping + (gravity + body.force / body.mass) * dt
  4. И это для установки угловой скорости: body.angular_velocity = body.angular_velocity*damping + body.torque / body.moment * dt

Вы можете найти фактический код для шагов 1 и 2 здесь: https://github.com/viblo/pymunk/blob/master/chipmunk_src/src/cpSpaceStep.c#L399

Код для шагов 3 и 4 здесь: https://github.com/viblo/pymunk/blob/master/chipmunk_src/src/cpBody.c#L494 (я перевел код c в исходном коде на термины python/pymunk в своем ответе выше)

person viblo    schedule 13.06.2017
comment
Интересно. Спасибо, что указали мне на исходный код. Итак, мне все еще неясно: взаимодействует ли значение демпфирования модифицированной функции скорости с пространством. демпфирование каким-либо образом (составляется, умножается, добавляется и т. д.)? - person Skittles; 14.06.2017
comment
Затухание из пространства передается в функцию скорости тела. Если у вас есть пользовательская функция скорости, полностью зависит от вас, что вы хотите делать с передаваемым демпфированием. - person viblo; 14.06.2017