|
楼主 |
发表于 2013-1-22 18:32:12
|
显示全部楼层
liuzhiyu123 发表于 2013-1-22 16:18
为什么会出这个错误呢。。能说下您的想法么。。没遇到过啊
我就是修改了一下DlaunayTriangulator的源码,在里边加了这么一段
//自己添加的约束条件,删除边长过大的三角形
Triangle_list::iterator myTi;
float myThreshold = 0.5;
for (myTi=triangles.begin(); myTi!=triangles.end();){
if(getDis((*points)[myTi->edge_[0].ibs_], (*points)[myTi->edge_[0].ies_]) > myThreshold){
myTi = triangles.erase(myTi);
}else if(getDis((*points)[myTi->edge_[1].ibs_], (*points)[myTi->edge_[1].ies_]) > myThreshold){
myTi = triangles.erase(myTi);
}else if(getDis((*points)[myTi->edge_[2].ibs_], (*points)[myTi->edge_[2].ies_]) > myThreshold){
myTi = triangles.erase(myTi);
}else{
myTi++;
}
}
其中myThreshold 等于0.5就完全没问题 但是如果设置成0.4 0.3或者更小 就出这个错误 |
|