Как рассчитать нагрузку в Box2D? - PullRequest
1 голос
/ 06 мая 2009

Я использую Box2D (версия AS3 / Flash, если это имеет значение) и пытаюсь подсчитать, сколько веса несет каждое тело.

Я знаю, как перебирать все тела, и я знаю, как опрашивать процедуры обнаружения столкновений, но кажется, что силы столкновения отмирают до нуля после применения веса. Есть ли какое-то свойство "общая статическая сила", которое я пропускаю?

Ответы [ 3 ]

2 голосов
/ 07 мая 2009

Используя тип contactResult в необязательном объекте contactListener, вы можете опрашивать normalForce каждого элемента, чтобы выяснить, какие силы (которые включают в себя вес) применяются к объектам.

Обратите внимание, что спящие тела (например, стек покоя) не будут вызывать contactResults, но они должны нормально работать, если вы выключаете сон или если вы хотите измерять силы только во время движения.

Информацию о том, как реализовать класс contactListener, смотрите в документации.

0 голосов
/ 06 мая 2009

Прошло некоторое время с тех пор, как я играл с Box2D, но вы пробовали опрашивать GetReactionForce () на интересующие вас вещи?

Я знаю, что когда я выполнял симуляцию моста и хотел, чтобы мост сломался в зависимости от веса на нем, я набрал GetReactionForce () и, если он был выше определенного порога, я удалил соединение соединяя два тела.

0 голосов
/ 06 мая 2009

Я думаю, что все, что вам нужно сделать, это перебрать все экземпляры b2Body и использовать метод GetMass ().

Я не уверен, что вы подразумеваете под "общей статической силой".

Что касается веса / массы, я думаю, что вы применяете это перед любыми столкновениями, когда вы создаете тело, либо установите его самостоятельно, используя setMass (); или пусть box2d оценивает массу на основе формы, используя метод SetMassFromShapes ().

НТН

...