void Convex::FacetToSegmentsGorizon(FacetList *FL, SegmentList *SL) { Facet *pF; Segment S; SegmentList SN; if ( FL->GetFirst(&pF) ) { // з кожної грані створюємо три ребра do { S.Init(pF->A, pF->B); SN.Add(S); S.Init(pF->A, pF->C); SN.Add(S); S.Init(pF->C, pF->B); SN.Add(S); } while (FL->GetNext(&pF)); // В список ребер горизонту включаємо лише зовнішні ребра видимої області while(!SN.IsEmpty()) { SN.Remove(&S); if (SN.FindAndRemoveAll(S)==0) { SL->Add(S); #ifdef CONVEX_DEBUG printf( "Add to horizon : "); S.PrintPoints(); #endif }; }; }; }