我必须实现一个算法来分解体素中的三维体积。该算法通过识别切割平面的每一侧上的哪些顶点以及第二步中哪条边穿过切割平面来开始。何时从无序列表切换到排序列表? [优化]
这个过程可以通过使用排序列表的好处来优化。识别分割点是O log(n)。但我必须维护一个这样的排序列表,每个轴和顶点和边缘。由于这是要被GPU使用的,所以我对内存管理(即CUDA)也有一些限制。侵入性列表M /树和C是强加的。
有了完整的“体素化”,我预计最终会有4000点和12000个边缘。幸运的是,这可以通过使用更智能的策略来摆脱已处理的体素并对剩余体积进行排序以使其数量保持最小,从而进行优化。在这种情况下,我希望有少于100点和300个边缘。这使得这个过程更加复杂,但最终可能会更有效率。
因此,问题是帮助我确定标准,以确定何时使用排序数据结构的好处值得努力和复杂性开销与简单的入侵链接列表相比较。
这是一个非常好的主意,有一个简单的,也许很慢的版本,这是正确的,可以对其进行测试。然后你可以开发一个更复杂的版本,运行速度更快,并且可以根据天真的版本检查正确性。 然后,制作排序后的链接列表并不那么复杂,它主要是关于如何插入元素,但是,以与排序顺序不同的顺序检索它们仍然会产生缓慢的结果,同样会插入新元素。 – 2009-04-21 15:07:49
我已经可以验证体素化的好处了。现在我想优化流程,并使用与首先使用的策略不同的策略。在第一种方法中,我实例化了体素并用体积表面切割了它们的面。这是最简单的实现,并且很平行。但是我最终重新计算了相同的交点和其他值。通过体积体积进行优化可以避免它,但会带来开销。 – chmike 2009-04-21 15:54:16