我有两个非凸网格,我想要找到它们之间最近的距离。近似值就足以满足我的需求(只要它不偏离真实值)。2个凸包之间的最近距离
我打破了许多凸起部分的非凸形网格,出于速度的原因,我也找到了每个凸起部分的凸包。
然后,我测试第一个和第二个网格的外壳之间的所有组合的距离。最短的一个定义两个网格之间的最近距离。
我已经有一个CGAL's Optimal Distances包的工作解决方案(见下图)。结果很好,但运行时间并不理想,实际上它是我管道中的主要瓶颈。
它是有道理的,这个问题是资源密集型的,但它会是一个更快的选择与CGAL或其他库或方法,给出了类似的结果真的很好。不幸的是我到现在还没有找到任何替代方案。
更新:
上述精确定位到CGAL-的例子,我在下面,即 “polytope_distance_d_fast_exact.cpp” 示例中提供的链接。至于使用的内核,我使用:
// use an inexact kernel...
typedef CGAL::Homogeneous<double> K;
typedef K::Point_3 Point;
// ... and the EXACT traits class based on the inexcat kernel
typedef CGAL::Polytope_distance_d_traits_3<K, ET, double> Traits;
typedef CGAL::Polytope_distance_d<Traits> Polytope_distance;
你使用的是什么内核? – sloriot 2014-09-24 11:41:51
请检查更新后的帖子,信息添加到那里。 – 2014-09-24 12:14:19
尝试用CGAL替换ET :: Lazy_exact_nt –
sloriot
2014-09-24 13:52:50