Exemple #1
0
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;
                }
            }
        }
    }

}
Exemple #2
0
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;
}