// Перетворення списку граней на список точок, з видаленням повтор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); }; };
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; }
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)); }; }