przeciecie sie odcinkow, blad

0

Witam sprawdzilem algorytm dla 2 odcinkow, i dziala on prawidlowo :|AB| |CD| kazdy Punkt ma 2 wspolrzedne x,y
istnieje warunek ze:
[det(A,B,C)]*det(A,B,D)] >=0 brak przeciecia jesli <0 jest przeciecie.
moj problem:

ifstream plik_manipulator;
    plik_manipulator.open("manipulator.dat"); 
    plik_manipulator>>punkt0[0]>>punkt0[1];
    plik_manipulator>>punkt1[0]>>punkt1[1];
    plik_manipulator>>punkt2[0]>>punkt2[1];
    plik_manipulator>>punkt3[0]>>punkt3[1];
    plik_manipulator.close();

int ile_wielokatow,ile_bokow,ile_punktow;
    cout<<"ile przeszkod?"<<endl;
    cin>>ile_przeszkod;
    cout<<"ile bokow kazda z przeszkod"<<endl;
    cin>>ile_bokow;
    if (ile_bokow<3)
    cout<<"przeszkoda powinna miec minimum 3 boki"<<endl;else{
    ile_punktow=ile_przeszkod*ile_bokow+ile_przeszkod;
    cout<<"podaj wspolrzedne przeszkody jako 'x y' powtarzajac na koniec kadej przeszkody jej pierwszze wpsolrzedne"<<endl;
    schowek.clear();
    for(int i=0; i<ile_punktow; i++)
      {                
            cin>>przeszkoda[0];
            cin>>przeszkoda[1];
            schowek.push_back(przeszkoda);}

int przeciecie=0;
Wektor Tab_pom[]={punkt0,punkt1,punkt2,punkt3};
for(int z=0;z<4;z++){
        for(int v=0; v<schowek.size(); v++){
if ((det(Tab_pom[z],Tab_pom[z+1],schowek[v]))*(det(Tab_pom[z],Tab_pom[z+1],schowek[v+1]))>=0) {}//nieprzecinaja sie
if ((det(Tab_pom[z],Tab_pom[z+1],schowek[v]))*(det(Tab_pom[z],Tab_pom[z+1],schowek[v+1]))<0) {przeciecie++;} //przecianja sie
}}
if (przeciecie>0) return true;
else return false;
0

Linia poniżej nic nie robi - ergo nie jest potrzebna. Nie rozwiązuje to twojego problemu ale kod będzie czytelniejszy

if ((det(Tab_pom[z],Tab_pom[z+1],schowek[v]))*(det(Tab_pom[z],Tab_pom[z+1],schowek[v+1]))>=0) {}//nieprzecinaja sie
for(int v=0; v<schowek.size(); v++){

W tej petli iterujesz po wszystkich elementach od 0 do schowek.size()-1
Jak myślisz na co wskazuje

schowek[v+1]

dla v=schowek.size()-1

3.
Podobnie z Tab_pom[z+1]. Na co to wskazuje jeśli z = 3 (ostatnia wartość z zewnętrznej petli).
4.
Załącz cały kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1