【发布时间】:2012-10-07 13:49:56
【问题描述】:
我有一个长方体列表,由它们的左下角和右上角的坐标定义,边缘平行于轴。坐标是双精度值。这些长方体密集排列,会与一个或多个其他方体重叠,甚至完全包含其他方体。
我需要计算所有给定长方体所包含的总体积。重叠(甚至多次)的区域应该只计算一次。
例如,卷:
- ((0,0,0) (3,3,3))
- ((0,1,0) (2,2,4))
- ((1,0,1) (2,5,2))
- ((6,6,6) (8,8,8))
总音量为 27 + 1 + 2 + 8 = 38。 有没有一种简单的方法可以做到这一点(在 O(n^3) 时间或更好的时间内?)?
【问题讨论】:
-
尝试分而治之的方法。根据它们属于垂直线的哪一侧,将长方体列表分成两组,并将与直线相交的长方体分成两部分。这可能会导致运行时间看起来像 T(n) = 2T(n/2) + cn。
-
@krjampani: 我猜你的意思是飞机
-
是的!感谢您指出了这一点。但我现在认为扫描平面方法更适合这个问题。
标签: algorithm