void findConLine(TSafeVector *all, int li, TPoint *p1, int *resl, int cnt, TSafeVector *res,int n, int cur_i, int maxl) { if(n<maxl+1){ for(int i=cur_i; i<(all->length()); i++) { if((i!=li) && ( (*(((TLine*)(all->get(i)))->getp1()) == *p1 ) || (*(((TLine*)(all->get(i)))->getp2()) == *p1))) { resl[cnt] = i; if(*(((TLine*)(all->get(i)))->getp1())==*p1) findConLine(all, i, ((TLine*)(all->get(i)))->getp2(), resl, cnt+1, res, n+1,cur_i,maxl); else findConLine(all, i, ((TLine*)(all->get(i)))->getp1(), resl, cnt+1, res, n+1,cur_i,maxl); } } } else{ if((li==resl[0]) && (*(((TLine*)(all->get(resl[0])))->getp2())==*p1)) { if(maxl==4) { if( !( isCrossed(*(TLine*)(all->get(resl[0])), *(TLine*)(all->get(resl[2]))) || isCrossed(*(TLine*)(all->get(resl[1])), *(TLine*)(all->get(resl[3])))) && !( isParallel(*(TLine*)(all->get(resl[0])), *(TLine*)(all->get(resl[1]))) || isParallel(*(TLine*)(all->get(resl[1])), *(TLine*)(all->get(resl[2]))) || isParallel(*(TLine*)(all->get(resl[2])), *(TLine*)(all->get(resl[3]))) || isParallel(*(TLine*)(all->get(resl[3])), *(TLine*)(all->get(resl[0]))) )) { // найден четырехугольник res->setat(new TRectangle(*(TLine*)(all->get(resl[0])),*(TLine*)(all->get(resl[1])),*(TLine*)(all->get(resl[2])),*(TLine*)(all->get(resl[3]))),res->length()); } } else { if( !(isParallel(*(TLine*)(all->get(resl[0])), *(TLine*)(all->get(resl[1]))) || isParallel(*(TLine*)(all->get(resl[1])), *(TLine*)(all->get(resl[2]))) || isParallel(*(TLine*)(all->get(resl[2])), *(TLine*)(all->get(resl[0]))) )) { // найден трехугольник res->setat(new Triangle(*(TLine*)(all->get(resl[0])),*(TLine*)(all->get(resl[1])),*(TLine*)(all->get(resl[2]))),res->length()); } } } } }
bool SceneEdge::isError() const { return (this->isLyingNode() || this->isOutsideArea() || isCrossed()); }