Pku 1269 Intersecting Lines

Pku 1269 Intersecting Lines
#include  < stdio.h >
#include 
< math.h >
#include 
< stdlib.h >

struct  Point
{
    
double  x, y;
};

bool  line( Point a, Point b, Point c )
{
    
return  ( b.x -  a.x ) *  ( c.y -  b.y ) ==  ( b.y -  a.y ) *  ( c.x -  b.x );
}

bool  none( Point a, Point b, Point c, Point d )
{
    
return  ( b.x -  a.x ) *  ( d.y -  c.y ) ==  ( b.y -  a.y ) *  ( d.x -  c.x );
}

Point intersection( Point u1, Point u2, Point v1, Point v2 )
{
    Point ret
=  u1;
    
    
double  t =  ( ( u1.x -  v1.x) *  ( v1.y -  v2.y ) -  ( u1.y -  v1.y)  *  ( v1.x -  v2.x ) )
              
/  ( ( u1.x -  u2.x ) *  ( v1.y -  v2.y ) -  ( u1.y -  u2.y) *  ( v1.x -  v2.x) );
              
    ret.x
+=  ( u2.x -  u1.x ) *  t;
    ret.y
+=  ( u2.y -  u1.y ) *  t;
    
    
return  ret;
}

int  main()
{
    
int  test;
    scanf(
" %d " , & test);
    
    puts(
" INTERSECTING LINES OUTPUT " );
    
while ( test --  )
    {
        Point a, b, c, d;
        scanf(
" %lf %lf %lf %lf %lf %lf %lf %lf " & a.x, & a.y, & b.x, & b.y,
               
& c.x, & c.y, & d.x, & d.y );
               
        
if ( line( a, b, c )  &&  line( a, b, d ) ) puts( " LINE " );
        
else   if ( none( a, b, c, d ) ) puts( " NONE " );
        
else
        {
            Point t
=  intersection( a, b, c, d );
            printf(
" POINT %.2lf %.2lf\n " , t.x, t.y );
        }
    }
    puts(
" END OF OUTPUT " );
    
    
return   0 ;
}

你可能感兴趣的:(Pku 1269 Intersecting Lines)