//------------------------------------------------------------------------------
// 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();}
Esempio n. 10
0
typename EdgeVec::iterator outgoingBegin(){return outgoingEdge.begin();}
Esempio n. 11
0
typename EdgeVec::iterator incomingEnd(){return incomingEdge.end();}
Esempio n. 12
0
typename EdgeVec::iterator incomingBegin(){return incomingEdge.begin();}
Esempio n. 13
0
 int numOutgoingEdges()const{return outgoingEdge.size();}