我正在编写代码,它将为二维的(不一定是凸的)多边形构建一个定向边界框(obb)树。
到目前为止,我能够通过找到它的凸包并在外壳上使用旋转卡尺来找到多边形的面积最小 obb。
下图就是一个例子。带有红线和红点的黄色填充多边形描绘了原始多边形。凸包用黑色线条显示为蓝色,而 obb 显示为紫色线条。
(编辑)根据要求:交互式版本- 仅在 chrome 中测试
现在我想扩展我的代码来构建一个 OBB 树,而不仅仅是一个 OBB。这意味着我必须切割多边形,并为多边形的每一半计算新的 OBB。
推荐的方法似乎是通过将 OBB 切成两半来切割多边形。但是,如果我将 obb 从其任一轴的中间切开,看起来我将不得不在多边形上创建新顶点(否则我如何找到该分区的凸包?)。
- 有没有办法避免添加这样的顶点?
- 如果没有,最简单的方法是什么(相对于实施难度)?什么是运行时效率最高的方式?