void STLEdgeDataList :: BuildLineWithEdge(int ep1, int ep2, Array<twoint>& line) { int status = Get(GetEdgeNum(ep1,ep2)).GetStatus(); int found, pstart, p(0), en, pnew(0), ennew(0); int closed = 0; int j, i; for (j = 1; j <= 2; j++) { if (j == 1) { p = ep1; } if (j == 2) { p = ep2; } pstart = p; en = GetEdgeNum(ep1,ep2); found = 1; while (found && !closed) { found = 0; if (GetNEPPStat(p,status) == 2) { for (i = 1; i <= GetNEPP(p); i++) { const STLTopEdge & e = Get(GetEdgePP(p,i)); if (GetEdgePP(p,i) != en && e.GetStatus() == status) { if (e.PNum(1) == p) { pnew = e.PNum(2); } else { pnew = e.PNum(1); } ennew = GetEdgePP(p,i); } } if (pnew == pstart) { closed = 1; } else { line.Append(twoint(p,pnew)); p = pnew; en = ennew; found = 1; } } } } }
void STLEdgeDataList :: BuildClusterWithEdge(int ep1, int ep2, Array<twoint>& line) { int status = Get(GetEdgeNum(ep1,ep2)).GetStatus(); int p(0), en; int j, i, k; int oldend; int newend = 1; int pnew, ennew(0); int changed = 1; while (changed) { changed = 0; for (j = 1; j <= 2; j++) { oldend = newend; newend = line.Size(); for (k = oldend; k <= line.Size(); k++) { if (j == 1) p = line.Get(k).i1; if (j == 2) p = line.Get(k).i2; en = GetEdgeNum(line.Get(k).i1, line.Get(k).i2); for (i = 1; i <= GetNEPP(p); i++) { pnew = 0; const STLTopEdge & e = Get(GetEdgePP(p,i)); if (GetEdgePP(p,i) != en && e.GetStatus() == status) { if (e.PNum(1) == p) { pnew = e.PNum(2); } else { pnew = e.PNum(1); } ennew = GetEdgePP(p,i); } if (pnew && !Exists(p,pnew,line)) { changed = 1; line.Append(twoint(p,pnew)); p = pnew; en = ennew; } } } } } }
void HitMap::CalculateTotalEdgel() { int edgelCount = 0; int edgeNum = GetEdgeNum(); for(int i=0;i<edgeNum;i++) { HitMapEdge edge = GetEdge(i); int edgelNum = edge.GetEdgelNum(); edgelCount += edgelNum; } totalEdgelNum = edgelCount; }