#python #pymunk
Вопрос:
Я пытаюсь создать реалистичный физический симулятор, используя библиотеку pymunk. Проблема, с которой я столкнулся, заключается в единицах измерения, используемых в библиотеке. Например, если я хочу определить константу G для векторной силы, как мне это сделать? Я уже тестировал 9.81, используя команду «space.gravity (0, -9.81), и он падает очень медленно. Я проверил страницу ссылок на pymunk, но ничего не смог найти.
Комментарии:
1. Если скорость слишком низкая, найдите значение, которое делает его более разумным, затем найдите коэффициент масштабирования и сохраните его для справки.
Ответ №1:
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 выполняет вычисления по шагам, а скорость и положение обновляются отдельно)