问题:有一个由很多三角形组成的网格,现在要找出它的最外面一圈边界。已知的信息有:
1.网格中每个点的坐标值浮点型(x,y),索引值整形i。
2.每个三角形三个点的索引值整形index1,index2,index3.
我写的基本算法:
1.建立一个结构,类似无向图的边,这样每个三角的边为e1=(index1,index2),e2=(index1,index3),e3=(index2,index3)
2.取一个边,循环查找这个边在剩下的网格边中被使用的次数,如果为0,则为边界边,如果大于等于1,则肯定是内部边.
3.循环取所有边进行上述比较。
基本算法的问题:
30w个三角形,有将近80w个 边,循环比较需要80w*80w次,复杂度为O(n*n),时间开销太大,有没有算法能降低到O(n)或者O(nlogn)
注意:网格可能是凸也可能是凹的,所有通过计算距离来比较是不行的