//------------------------------------------------------------------------------ // generate display IDs for Hbr edges static void createEdgeNumbers(std::vector<Hface const *> faces) { typedef std::map<Hhalfedge const *, int> EdgeMap; EdgeMap edgeMap; typedef std::vector<Hhalfedge const *> EdgeVec; EdgeVec edgeVec; { // map half-edges into unique edge id's for (int i=0; i<(int)faces.size(); ++i) { Hface const * f = faces[i]; for (int j=0; j<f->GetNumVertices(); ++j) { Hhalfedge const * e = f->GetEdge(j); if (e->IsBoundary() or (e->GetRightFace()->GetID()>f->GetID())) { int id = (int)edgeMap.size(); edgeMap[e] = id; } } } edgeVec.resize(edgeMap.size()); for (EdgeMap::const_iterator it=edgeMap.begin(); it!=edgeMap.end(); ++it) { edgeVec[it->second] = it->first; } } static char buf[16]; for (int i=0; i<(int)edgeVec.size(); ++i) { Hhalfedge const * e = edgeVec[i]; float sharpness = e->GetSharpness(); if (sharpness>0.0f) { Vertex center(0.0f, 0.0f, 0.0f); center.AddWithWeight(e->GetOrgVertex()->GetData(), 0.5f); center.AddWithWeight(e->GetDestVertex()->GetData(), 0.5f); snprintf(buf, 16, "%g", sharpness); g_font->Print3D(center.GetPos(), buf, std::min(8,(int)sharpness+4)); } } }
int numIncomingEdges()const{return incomingEdge.size();}
void addIncomingEdge(Edge<Node>* e){incomingEdge.push_back( e );}
void addOutgoingEdge(Edge<Node>* e){outgoingEdge.push_back( e );}
typename EdgeVec::const_iterator outgoingBegin()const{return outgoingEdge.const_begin();}
typename EdgeVec::const_iterator outgoingEnd()const{return outgoingEdge.const_end();}
typename EdgeVec::const_iterator incomingBegin()const{return incomingEdge.const_begin();}
typename EdgeVec::const_iterator incomingEnd()const{return incomingEdge.const_end();}
typename EdgeVec::iterator outgoingEnd(){return outgoingEdge.end();}
typename EdgeVec::iterator outgoingBegin(){return outgoingEdge.begin();}
typename EdgeVec::iterator incomingEnd(){return incomingEdge.end();}
typename EdgeVec::iterator incomingBegin(){return incomingEdge.begin();}
int numOutgoingEdges()const{return outgoingEdge.size();}