Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: