【发布时间】:2012-06-03 04:07:12
【问题描述】:
我正在编写代码,该代码将为二维(不一定是凸面)多边形构建一个定向边界框 (obb) 树。
到目前为止,我能够通过找到凸包并在凸包上使用旋转卡尺来找到多边形的面积最小 obb。
下图就是一个例子。带有红线和红点的黄色填充多边形描绘了原始多边形。凸包显示为蓝色,黑色线条,obb 显示为紫色线条。
(编辑)根据要求:Interactive Version - 仅在 chrome 中测试
现在我想扩展我的代码来构建一个 OBB 树,而不仅仅是一个 OBB。这意味着我必须切割多边形,并为多边形的每一半计算新的 OBB。
这样做的推荐方法似乎是通过将 OBB 切成两半来切割多边形。但是,如果我将 obb 从其任一轴的中间切开,看起来我必须在多边形上创建新顶点(否则我如何找到该分区的凸包?)。
- 有没有办法避免像这样添加顶点?
- 如果不是,最简单的方法是什么(相对于实施难度)?什么是运行时效率最高的方式?
【问题讨论】:
-
不知道这到底是怎么一回事,但仍然 +1 似乎是一个有趣的问题。不过,我们可以得到一些代码和/或小提琴吗?扔狗骨头。
-
@JaredFarrish:谢谢。我会努力搞定的:)
-
@JaredFarrish:添加了小提琴链接,虽然现在代码真的很乱。如果要输入自定义点,请注意 x,y 原点在左下方。
-
来吧:jsfiddle.net/Pj2Ak/1 我将 JS 放在面向 Javascript 的区域中(而不是使用
body-stylescript标签)。请记住,您需要有人知道这到底是怎么回事。 -
这可能是题外话,但你见过three.js吗?
标签: javascript geometry computational-geometry bounding-box