我正在使用C#WPF。

我正在寻找一种算法来解决我的问题。可能不是那么简单,而是进入3D图形。

我在3D空间中具有2D曲面(也可以由点云表示)。

我需要将此表面分成较小的部分,以适合特定的框(例如300 x 300 x 15)。

我正在寻找一种在3d中工作的算法,该算法不是轴对齐的,类似于最小体积边界框,但是如果该框大于特定体积,则将体积分成较小的框。

我怀疑OBB的优化问题和许多迭代,但是我不知道如何解决。

图片说明了一些问题。红色和黑色框不被强制与轴对齐,它们应小于或等于最大框尺寸(尺寸而不是体积!)。



谢谢大家的支持!

最佳答案

对于用圆盘覆盖形状的问题,已知您的问题是NP难题:请参见f.e. https://en.wikipedia.org/wiki/Geometric_set_cover_problem。我强烈怀疑您的机套问题没有什么比这更好的了。因此,您必须采用近似精确的算法在线性或多项式时间内完成工作。根据您可以在解决方案中牺牲的条件,使用已知解决方案可能会完成完全不同的任务。因此,如果您解释如何完成此任务以及要解决的实际任务是什么,那么我们可以讨论哪种近似解决方案可能足以满足您的情况。

例如,如果您对点集具有次优(但足够好)的覆盖,并且具有次优大小和方向(但又足够好)的定向框,则可以采用一些快速算法,包括生成epsilon网络(请参阅fe https://en.wikipedia.org/wiki/%CE%95-net_(computational_geometry)https://en.wikipedia.org/wiki/Delone_set)和/或贪婪地将点集细分为子集,并为每个子集提供足够好的定向边界框的贪婪近似。

另外,我还没有在实践中亲自使用过它,但是如果我不得不考虑您对任务的大概解决方案,而又知道您对解决方案的限制,那么我想将它与https://arxiv.org/abs/1409.7425一起使用,它应该用作生成框架的方法与您相似的任务系列的近似解决方案。看一看,可能是您看到对您明确有用的东西,或者是您看到了谷歌准备使用解决方案的有用词。

关于c# - 将3D点云拆分为更小的定向边界框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46072423/

10-15 00:09