Я пытаюсь поэкспериментировать с движками 2D физики в C ++. Пока что, похоже, самым популярным является Box2D. К сожалению, Box2D - это жесткий физический движок, и это не поможет мне с тем, что я хочу попробовать.
Я хочу иметь возможность определить форму, в которой есть несколько вершин, соединенных пружинами, чтобы при столкновении этой формы с жесткими или другими нежесткими формами ее форма была гибкой.
Теперь я попытался придумать способы сделать это в Box2D, используя только твердые тела, но всегда есть недостатки:
- Используйте прямоугольники или отрезки для внешних краев гибкой формы. Они будут сталкиваться с другими формами. К сожалению, они не упругие, поэтому желаемого эффекта не будет видно.
- Каждая вершина фигуры может быть телом со своей маленькой круглой формой. Эти тела могут быть затем соединены вместе пружинами. Это будет прекрасно работать с точки зрения деформации формы, но представьте, что форма приземлилась на жесткий шип, а шип только что прошел между вершинами. Тогда форма застрянет на шипе.
Так, каков наилучший способ сделать этот вид физики в C ++? Желательно без необходимости писать весь физический движок. Может быть, я просто скучаю по функции Box2D. Может быть, это просто не правильный выбор. Тогда каков правильный выбор?