Intersection of Pair of Lines in the Goven Order of N Lines

Language
This project will teach you how to get the intersection of pair of lines in the goven order of N lines. This is very simple project. Download project to see the full source code. Please don't forget to like my page.
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5.  int i=0;
  6.         int a1=0 , b1=0 ,c1=0;int K=0;
  7.         int detA =0 , det1 =0 , det2=0 ;int SIZE=0;
  8.         float  *x,*y ; int lines=0;int p=0,q=0,r=0,s=0;
  9.         float x_cor =0 , y_cor =0;
  10.        
  11.         struct COF {
  12.                  int a =0,b=0,c=0,k=0;
  13.                  int count =0;
  14.                  struct COF *next;
  15.         };
  16.        
  17.         struct POINT
  18.         {
  19.           float x_cord =0 , y_cord=0; int count =0; struct POINT *next;
  20.         };
  21.        
  22.         void CREATE (POINT *A)
  23.        { A=(POINT *) malloc ( sizeof(POINT));return;
  24.            }
  25.            
  26.            
  27.            void  CheckPoint(float cordx , float cordy , POINT *B)
  28.             {
  29.               int TESTX=0 ,TESTY=0;
  30.               int FLAGX =0,FLAGY=0 ,STATUS =0;
  31.                        
  32.                        
  33.                      
  34.                
  35.                 i=0;
  36.                 printf("Entering to CheckPoint PRESS ANY KEY \n");getch();
  37.                 do
  38.                 {
  39.                    printf("i== %d \n",i);
  40.                   if( (B->x_cord <=cordx && B->next->x_cord >= cordx ) || (B->next->x_cord <= cordx && B->x_cord >=cordx ) )  { TESTX=1;}
  41.                  
  42.                  
  43.                  
  44.                  
  45.                   if( (B->y_cord <=cordy && B->next->y_cord >= cordy ) || (B->next->y_cord <= cordy && B->y_cord >=cordy ) )  { TESTY=1;}
  46.                  
  47.                  
  48.                  
  49.                  
  50.                   B=B->next;
  51.                  
  52.                   i++;
  53.                  
  54.                  
  55.                                 }
  56.                                
  57.                                 while ( B->next->count!=1  );
  58.                                
  59.                                 printf("EXIT FROM DO WHILE \n");
  60.                                
  61.                                 printf("TESTX= %d  TESTY= %d \n", TESTX ,TESTY);
  62.                                
  63.                                   if(TESTX==1 && TESTY==1 ) { printf("POINT IS INSIDE \n") ; }
  64.                                   else { printf("POINT IS OUT SIDE \n");  }
  65.                                  
  66.                                   return;
  67.                
  68.                 }
  69.            
  70. int main(void)
  71.  
  72. {
  73.    
  74.        
  75.         struct COF *P;
  76.         P=(COF *) malloc(sizeof(COF));
  77.         struct COF *REF;
  78.         REF=(COF *) malloc(sizeof(COF));
  79.         REF=P;
  80.                
  81.                 printf("Number of lines N= ");
  82.             scanf("%d",&lines);
  83.            
  84.         POINT *XY ,*REFPOINT  ;
  85.          REFPOINT=(POINT *) malloc ( sizeof(POINT));
  86.    for (i=0;i<lines ;i++)
  87.      {   if(i==0) {
  88.          XY=(POINT *) malloc ( sizeof(POINT));REFPOINT=XY; }
  89.          
  90.          
  91.          else {
  92.                
  93.                         if(i!=lines-1)  
  94.                  
  95.                    {
  96.                    XY->next=(POINT *) malloc ( sizeof(POINT));
  97.            XY=XY->next;
  98.                    }
  99.                         else {XY->next=(POINT *) malloc ( sizeof(POINT));
  100.                        XY->next=REFPOINT;
  101.                                         }
  102.                       }
  103.          
  104.                
  105.                  }     
  106.  
  107.        
  108.        
  109.        
  110.         x=(float *) malloc(lines*sizeof(float));
  111.             y=(float *) malloc(lines*sizeof(float));
  112.  
  113.        
  114.         if (x==NULL || y==NULL ) { printf(" X OR Y IS NOT CREATED \n");
  115.         }
  116.            
  117.        
  118.        
  119.     for ( i=0;i<lines ; i++ )
  120.    
  121.         {
  122.         printf("Enter the Coficients of  %d th   line \n", i+1 );
  123.         printf("Enter a[%d] = ", i);
  124.         scanf("%d",&a1);
  125.         printf("Enter b[%d] = ",i);
  126.         scanf("%d",&b1);
  127.         printf("Enter c[%d] = ",i);
  128.         scanf("%d", &c1);
  129.         P->a=a1; P->b=b1;P->c=c1 ;P->k=-1*c1;P->count=i;
  130.         a1=0 ; b1=0 ;c1=0;
  131.         P->next=(COF *) malloc(sizeof(COF));
  132.         if(i==lines-1) { P->next=REF;}
  133.           else { printf("VALUE OF i is %d : \n",i); P=P->next;}
  134.  
  135.                 }      
  136.  
  137.       printf("CIRCULAR LINKED LIST OR COEFICIENT LIST IS CREATED \n ");
  138.      
  139.       i=0;P=REF;
  140.      
  141.      
  142.       do
  143.      
  144.       {
  145.         p=0,q=0,r=0,s=0;
  146.                
  147.         printf("CALCULATING DET A DET 1 DET 2  \n ");
  148.         p=P->a; q=P->next->b; r=P->next->a; s=P->b;
  149.        
  150.         detA=p*q - r*s ;
  151.        
  152.         printf("DET A is %d : \n ", detA);
  153.        
  154.         p=0;q=0;r=0;s=0;
  155.        
  156.         p=P->a; q=P->next->k; r=P->next->a; s=P->k;
  157.        
  158.         det1=p*q - r*s ;
  159.         printf("DET 1 IS %d \n",det1);
  160.         p=0;q=0;r=0;s=0;
  161.        
  162.         p=P->next->b; q=P->k; r=P->b; s=P->next->k;
  163.        
  164.         det2=p*q - r*s ;
  165.         printf("DET 2 IS %d \n",det2);
  166.        
  167.         printf("Finding the Intersection : \n ");
  168.        
  169.         *(x+i)=float(det2)/float(detA);
  170.         *(y+i)=float(det1)/float(detA) ;
  171.        
  172.         printf("INTERSECTION is : X=%f  & Y=%f  \n ", *(x+i) , *(y+i)  );
  173.         i++;
  174.         P=P->next;     
  175.                   }
  176.                  while( P->next->count != 1  ) ;
  177.      
  178.         XY=REFPOINT;
  179.        
  180.         for(i=0;i<lines;i++)
  181.         { XY->x_cord=*(x+i);
  182.           XY->y_cord=*(y+i);
  183.           XY->count=i;
  184.           printf( " X CORD %f Y CORD %f COUNT %d \n ",XY->x_cord,XY->y_cord,XY->count );
  185.          
  186.           XY=XY->next;
  187.         }
  188.        
  189.        
  190.        
  191.        
  192.         XY=REFPOINT;
  193.        
  194.          printf("ARE YOU SURE THE LINES IN THE ORDER FORM A REGULAR POLYGON OF %d SIDES : IF SURE ENTER 1 OTHER WISE ENTER 0 :",lines);
  195.                 scanf("%d",&K);
  196.         if(K==1)
  197.         {
  198.                 printf("ENTER THE CORDINATES OF THE POINTS .\n");
  199.             printf("ENTER X CORDINATE :");
  200.             scanf("%f", &x_cor);
  201.             printf("ENTER Y CORDINATE : ");
  202.             scanf("%f", &y_cor );
  203.                 CheckPoint(x_cor,y_cor,XY);
  204.         }
  205.        
  206.         printf("END \n ");
  207.        
  208.         free(x);free(y);free(XY);free(P);
  209.         getch();
  210.        
  211.         return(0);
  212.        
  213. }

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Add new comment