Проблема циклических соеденений в Box2d
Разрабатываю приложение с использованием LibGDX и Box2d. У меня есть механизм из тел, которые связаны между собой жесткими соеденениями. Для того, чтобы сделать соеденения ломкими, я использую методы getReactionForce() и getReactionTorque().
//delta is always 1f/60f
public void Update(float delta) {
if (joint.getReactionForce(1f/delta).len() > 1000f) Destroy();
if (joint.getReactionTorque(1f/delta) > 1000f) Destroy();
}
Но я обнаружил, что эти методы в некоторых случаях возвращяют слишком большие значения силы и крутящего момента. Меня это не устраивало.
Спустя время я понял, что подобное поведение возникает, когда Box2d не может решить столкновения или привести в порядок соеденения (то есть когда решение одной коллизии порождает другую). Тогда я немного уменьшил размер тела, чтобы оно не пересекалось с соседними, но это не помогло. В конце-концов я обнаружил, что проблема возникает в случае, когда група тел соеденена циклически (то есть, когда граф из тел-узлов и соеденений-ребер содержит циклы). "Первое изображение - циклов нет"
"Второе изображение - циклы есть. После удара возникають большие усилия"
Причем она появляеться не сначала, а после сильного удара:
"Третье изображение - циклы есть. Но до удара все нормально"
Вопрос: как как сделать силы реакции соеденение нормальными? Буду благодарен за помощь.