当对一组点进行三角测量并且点数很大(10百万)时,您需要在使用四叉树或八叉树细分问题后对三个块进行三角测量。
到目前为止,我们正在寻找一种智能方法来填充每个网格之间的小直线间隙。你认识一个好人吗?
感谢。
答案 0 :(得分:1)
不是通过将网格的各个部分焊接在一起来完成,为什么不将点集分解为重叠块呢?通过这种方式,您的问题就变成了删除不需要的边缘而不是找到丢失的边缘,代价是重复沿边界计算网格。虽然我怀疑它的计算复杂性没有区别,但这可能会更容易。
我认为,对于两个重叠的块,大多数标准的三角测量方法不能期望在边界上产生相同的网格。但是,我也相信(没有证明)跨越边界(相邻内部)块之间的边界的网格计算越来越可能在边界上产生相同的三角剖分,因为重叠的深度增加。
考虑现有的一组点的三角测量,并在现有点的船体外添加一个新点。在大多数情况下,对扩展点集进行三角测量仅需要对现有网格进行局部(在某种模糊意义上)调整。同样地,删除现有网格边缘的点很少会影响网格中心的三角剖分。
如果此 ad-hoc 方法不适合您,请使用您最喜爱的搜索引擎并查找并行delaunay三角测量
答案 1 :(得分:0)
如果使用线性元素(直边)连接网格,则只有相邻边缘上的端点不重合才能获得间隙。
您可以在一个公差范围内检查是否应该将两个点设为一个,但公差必须小于网格中的最短边,否则您将折叠元素。
我能想到的最聪明的事情是并行化工作。将网格划分为每个线程/进程一个块,并对每个进行容差检查。
这可能是一个很好的地图减少工作。或许GPU和CUDA可能是一个很好的方法。
当你计算两点之间的距离时,你可以放弃昂贵的平方根,只看一下与公差相比的距离的平方。