支持曲面和逆布尔型的2D物理库?

我已经使用box2D几个月了,但是现在我非常需要一个可以使用布尔形状的物理库(即:从正方形中切出一个圆)和/或曲面。 有没有人有什么建议?

编辑:语言是c ++

你有没有考虑过将标准box2d形状/固定装置和凸多边形连接到同一个物体?

如果你想要的话,你甚至可以实现像这个.NET(C#)Box2d端口提供的凹面分解algorithm(在底部,它也支持一些布尔运算):

http://farseerphysics.codeplex.com/documentation

PS:应该有一些不支持凹多边形的性能/复杂性原因。

我不确定你所描述的是什么东西。 所有东西都可以用凸形来制作,特别是在graphics/物理math中(这使得在身体上的操作更容易)

更重要的是寻找,制作和实现将复杂形状分解成尽可能简单的形状的algorithm。 这就是所谓的多边形分区 ,要做到这一点,我会建议这个简单的,几乎包容的图书馆 :

物理math可以更精确地处理弧形项目,例如圆形,因为当形状具有相同的半径时,有很快的方程。 我会建议简单地把圆圈(或只是圆的一部分)和多边形放在一起,以形成你想要做的任何弯曲的,尖的或其他疯狂的形状。 即使现在,也有很多algorithm可用于此。

你也可以通过在车身上加一个“孔”形状来将“孔”形状化,然后在运行时testing一个碰撞形状是否在整体内部。 如果是的话,不要做任何碰撞。

也如果你不知道; 正弦和余弦波对于制作弯曲的丘陵等非常有帮助。

我现在非常需要一个物理库,它可以使用布尔形状(即从一个正方形切出一个圆)和/或曲面

你正在寻找的术语是

  • (2D)CPG – 构造平面几何
  • (3D)CSG – 建设性的立体几何

如果你可以没有弯曲的生活(至less在你的切口区域),去@Den建议的方法。

如果您需要能够沿着曲线切割多边形,则几乎必须find诸如GPC之类的CSG库。 你将不得不能够find一个支持交叉点的样条线。 然后你将不得不将这些样条数据传送到Box2D。 要注意的是,好的CPG库要花费几百到几千美元。 那里有免费的,但它们绝不是全function的或者是最优化的(一般来说,虽然它们不是实时使用的)。

有一件事我会提醒你 – 如果你至less没有研究生水平的math背景,不要试图在家里解决多边形相交问题。 有一个原因,他们收取这些解决scheme的大笔资金。