我有一个3D表面作为一组三元组(x_i,y_i,z_i)给出,其中x_i和y_i大致在网格上,并且每个(x_i,y_i)具有单个关联的z_i值。典型的网格是20x20
我需要在给定的公差范围内找到属于表面凸包的点。我正在寻找一种有效的算法来执行计算(我的客户提供了一个O(n³)版本,在400点数据集上需要大约10秒......)
答案 0 :(得分:5)
那里有很多,你没有搜索过吗?
以下是O( n log h )运行时的一对,其中 n 是输入点的数量, h < / em>是结果的顶点数:
http://en.wikipedia.org/wiki/Chan%27s_algorithm
http://en.wikipedia.org/wiki/Kirkpatrick-Seidel_algorithm
以下是四种方法的演示,其中包含算法链接:
答案 1 :(得分:2)
O(n ^ 3)版本可能是3d Hull的Jarvis算法。 看看this算法,我认为有很好的描述: