Я построил простой симулятор с помощью JBox2D, который включает в себя персонаж, построенный из коллекции тел и четырех револьверных суставов. У меня возникла проблема: мне нужно точно восстановить «позу» этого персонажа, учитывая список совместных углов, скоростей суставов и положения туловища/вращения/скорости/угловой скорости.Как настроить угол и скорость RevoluteJoint точно?
Есть удобные геттеры и сеттеры для состояния тела, но я не могу найти хороший способ заставить углы соединения туда, где они должны быть (движущиеся тела в процессе). Паровые решения на этом сайте рекомендуют создать базовую систему обратной связи, чтобы попытаться получить совместный двигатель для приведения сустава в нужный угол, но это похоже на то, что он будет неточным и, возможно, рассчитан на интенсивность. В идеале я хотел бы найти способ просто установить эти значения напрямую.
В крайнем случае я мог бы использовать кинематику вперед, чтобы рассчитать все переводы и вращения самостоятельно, но, возможно, есть более простой способ.
Любая помощь приветствуется. Благодарю.
Учитывая одно полностью определенное тело (положение, скорость, угол, угловая скорость, т. Е. [X, v, \ theta, \ omega]) и совместные свойства (угол, угловая скорость) всех связанных тел, кажется I должен быть способен решить для кортежа [x, v, \ theta, \ omega] для всего остального. Будет ли использование setTransform() и других сеттеров вызвать проблемы с суставами при следующем тикеровании тика? – amm
Нет, до тех пор, пока то, что вы устанавливаете, имеет смысл (это необходимо, если вы восстанавливаете значения из ранее запущенного симулятора). – iforce2d