网格在格式转化或者重新计算点的位置信息时,会出现网格退化的情况,退化的元素可以是网格数据的点、线和面片。
退化顶点的判断方式:
// 判断数据是否为nan int IsNAN(float t) { return _isnan(t) || (!_finite(t)); } bool IsDegenerateVertex(float p[3]) { if(IsNAN(P[0])||IsNAN( P[1])||IsNAN(P[2]) { return true; } return false }
退化边的判断方式:
bool IsDegenerateEdge(MeshEdge *pEdge) { // 如果两个顶点相等,则说明边已经退化 if(pEdge->V(0) == pEdge->V(1)) { return true; } return false; }
退化面片的判断方式:
bool IsDegenerateFace(MeshFace *pFace) { if(pFace->V(0) == pFace->V(1) || pFace->V(0) == pFace->V(2) || pFace->V(1) == pFace->V(2) ) { return true; } return true; }