Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by agasha ( 17 years ago )
bool checkCrossing(int a, int b, int i, int j)
{
Punkt p[4];
int t,d,c;
if (j>2)
{ //musza byc conajmniej 4 punkty, zeby powstaly 2 odcinki
p[0].x=a;
p[0].y=b;
p[1].x=Figury[i]->punkty[j-1]->x;
p[1].y=Figury[i]->punkty[j-1]->y;
//printf("\nP0 to %d %d P1 to %d %d \n",p[0].x,p[0].y,p[1].x,p[1].y);
for (t=(j-2); t>=1; t--)//w petli dla kazdego z odcinkow
{ // printf("\n\n Sprawdzam kolejny odcinek\n") ;
p[2].x=Figury[i]->punkty[t]->x; // drugi odcinek
p[2].y=Figury[i]->punkty[t]->y;
p[3].x=Figury[i]->punkty[t-1]->x;
p[3].y=Figury[i]->punkty[t-1]->y;
// printf("\nP2 to %d %d P2 to %d %d \n",p[2].x,p[2].y,p[3].x,p[3].y);
if ( sign(det(p[0],p[1],p[2])) != sign(det(p[0],p[1],p[3])) || sign(det(p[2],p[3],p[0])) != sign(det(p[2],p[3],p[1])) )
{
// printf("Przecinaja sie\n");//przecinaja sie
return 0;
}
}
//TUTAJ SPRAWDZIC CZY OSTATNI ODCINEK NIE PRZECINA SIE Z ZADNYM Z WCZESNIEJSZYCH!!!
if (j==(Figury[i]->ilosc_katow-1)) //sprawdzenie ostatniego odcinka - pierwszy i ostatni punkt
{ // printf("Jest ostatni odcinek - sprawdzam przecinanie\n");
printf("wSZEDLEM W PETLE") ;
printf("Pierwszy punkt x y to %d %d \n",Figury[i]->punkty[0]->x,Figury[i]->punkty[0]->y);
p[0].x=Figury[i]->punkty[0]->x; //powstaly wlasnie odcinek
p[0].y=Figury[i]->punkty[0]->y;
p[1].x=a;
p[1].y=b;
c=1;
printf("\nP0 i P1 to (%d,%d) (%d,%d) \n",p[0].x,p[0].y,p[1].x,p[1].y);
for (d=1; d<=(Figury[i]->ilosc_katow-3) ; d++)
{
c=c+2;
printf("Ilosc do sprawdzenia %d\n",(Figury[i]->ilosc_katow-3));
printf("d to %d\n",d);
p[2].x=Figury[i]->punkty[d]->x;
p[2].y=Figury[i]->punkty[d]->y;
p[3].x=Figury[i]->punkty[d+1]->x;
p[3].y=Figury[i]->punkty[d+1]->y;
printf("P2 i P3 to (%d,%d) (%d,%d) \n",p[2].x,p[2].y,p[3].x,p[3].y);
printf("de to %d ",wyznacz(p[0],p[1],p[2]));
printf(" de to %d\n",wyznacz(p[0],p[1],p[3]));
printf("de to %d ",wyznacz(p[2],p[3],p[0]));
printf(" de to %d\n",wyznacz(p[2],p[3],p[1]));
if ( sign( det(p[0],p[1],p[2]) ) != sign(det(p[0],p[1],p[3])) && sign(det(p[2],p[3],p[0])) != sign(det(p[2],p[3],p[1])) )
{
printf("ostatnie Przecinaja sie");
return 0;
}
}
return 1;
}
}
else return 1; // jest ok - bo nie ma sie co przecinac
}
Revise this Paste