复杂多边形的凸分解?

时间:2011-10-10 01:37:08

标签: c++ algorithm boost geometry

使用我的2D物理系统(box2D)和OpenGL,conplex多边形需要分解为凸多边形。确保模型符合这一点很容易。但是,我还想在模拟过程中编辑多边形,因此我需要一种动态方法将现有多边形压缩成更多仍然凸起的多边形。

我希望这张图有助于描述我的目标:

image aid

我的问题是,是否有现成的图书馆可以做到这一点?如果没有,那么自己最不容易出错的方法是什么?

(我正在浏览Boost,它有一个Geometry和一个Polygon模块,但是文档对我来说有点太深奥了,不知道是否可以做我想做的事。)

1 个答案:

答案 0 :(得分:4)

我认为this正是您所寻找的。

至于寻找交叉点,那只是一个小代数;对于任何两个线段,很容易得出相应的线('上升超过'等),

  

y = a1 * x + b1

     

y = a2 * x + b2

然后交点(x',y')是

  

x'=(b2-b1)/(a1-a2)

     

y'= a1 * x'+ b1

当然,这是线的交点,要确定线段实际相交,你需要用x,y坐标进行简单的范围检查。