Beispiel #1
0
// Перетворення списку граней на список точок, з видаленням повторiв
void Convex::FacetToPoints(FacetList *FL, PointList *PL)
{
    Facet       *pF;
    PointList   PT;
    Point       P;
    
    if ( FL->GetFirst(&pF) )
    {
        do {
            PT.Add(pF->A);
            PT.Add(pF->B);
            PT.Add(pF->C);
        } while (FL->GetNext(&pF));
    };

    while(!PT.IsEmpty())
    {
        PT.Remove(&P);
        PL->Add(P);
        PT.FindAndRemoveAll(P);
    };
};
Beispiel #2
0
PointList PointList::getFromUser()
{
    Point *temp;
    PointList list;
    while(cin>>&temp)
    {
        list.Add(temp);
    }

    //operator >> allocates memory even when fails on the last try
    delete temp;
    
    return list;
}
Beispiel #3
0
void Convex::DelVertexDoubles(PointList *PL)
{
    PointList PP;
    Point P, L;
    Segment S;
    SegmentList SN;

    if ( PL->GetFirst(&P) )
    {
        do {
            PP.Add(P);
        } while (PL->GetNext(&P));
    };
    
    if ( PL->GetFirst(&L) )
    {
        do {
            if ( PP.GetFirst(&P) )
            {
                do {
                    S.Init(P, L); 
                    SN.Add(S);
                } while (PP.GetNext(&P));
            };  
        } while (PL->GetNext(&L));
    }; 

    if ( PL->GetFirst(&P) )
    {
        do {
            if ( SN.GetFirst(&S) )
            {
                do {
                    if (S.Into(P))
                        PL->FindAndRemoveAll(P);
                } while (SN.GetNext(&S));
            };  
        } while (PL->GetNext(&P));
    };
}