三维表面的凸包算法z = f(x,y)

时间:2011-08-24 09:18:57

标签: algorithm 3d complexity-theory convex-hull

我有一个3D表面作为一组三元组(x_i,y_i,z_i)给出,其中x_i和y_i大致在网格上,并且每个(x_i,y_i)具有单个关联的z_i值。典型的网格是20x20

我需要在给定的公差范围内找到属于表面凸包的点。我正在寻找一种有效的算法来执行计算(我的客户提供了一个O(n³)版本,在400点数据集上需要大约10秒......)

2 个答案:

答案 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

以下是四种方法的演示,其中包含算法链接:

http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html

答案 1 :(得分:2)

O(n ^ 3)版本可能是3d Hull的Jarvis算法。 看看this算法,我认为有很好的描述: