【问题标题】:Finding faces of volume enclosed by planes寻找被平面包围的体积面
【发布时间】:2015-07-13 01:28:19
【问题描述】:

最终,我想实现一个具有以下规范的算法:

输入: N 个 3 维平面(每个平面给出 Ax + By + Cz = D)

输出:

  1. V 个顶点列表,以及
  2. 边缘列表E(来自V的对),以及
  3. F 面列表(从 E 循环)精确地限制了由 包围的体积(即法线的另一侧) N 架飞机

不能保证每个平面都会与面重合,但可以保证体积始终明确存在(即平面具有良好的法线)。

我知道这是在计算几何领域,但我尝试用谷歌搜索上面的一些术语,但没有找到任何东西。我认为一个解决方案应该包括一个二进制空间分区树。

到目前为止,我已经尝试了简单的方法 - 只是制作了一个巨大的 N^2 (ish) 平面之间所有切片的列表,然后针对每个平面检查每个切片,并删除那些位于错误一侧的切片至少一架飞机。这是 N^3,当然效率很低,它甚至还没有给出边缘 - 您仍然需要计算边缘的起点和终点在切片上的位置。

任何指向 CG 算法的帮助都会很棒!谢谢!

【问题讨论】:

  • 请注意,给定的一组平面可能包含几个不同的卷。在其内部找到包含原点的体积的顶点、边和面是 3 维凸包问题的对偶;将平面 Ax+By+Cz=1 映射到点 (A,B,C)。
  • 感谢对凸包问题的帮助,我去看看!

标签: algorithm geometry volume


【解决方案1】:

由于Preparata and Muller, 1979,有一个 O(n log n) 时间的算法。它使用极对偶性和高效的 3D 凸包算法。我确定存在它的实现(也许是 qhull?)。

【讨论】:

  • 谢谢,这要么是我想要的,要么接近它!
  • 在 4.6 版本中引入了 CGAL 中的实现。见herehere
猜你喜欢
  • 2015-02-08
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多