读书人

poj 1269 Intersecting Lines-直线相交

发布时间: 2012-09-16 17:33:16 作者: rapoo

poj 1269 Intersecting Lines--直线相交

/*题意:判断直线与直线的关系  是一条直线输出LINE  平行不在一条直线上NONE  相交输出交点*/#include<stdio.h>struct point{int x,y;};struct line{point p1,p2;int a,b,c;};line ppline(point p1,point p2)//根据两点求直线{line l;l.p1=p1;l.p2=p2;l.a=p2.y-p1.y;l.b=p1.x-p2.x;l.c=p1.y*p2.x-p1.x*p2.y;return l;}int lineintersect(line l1,line l2,double &p,double &q)//求两直线交点  有交点返回1交点是p  否则返回0{int d=l1.a*l2.b-l1.b*l2.a;if(d==0)return 0;p=(l2.c*l1.b-l1.c*l2.b)*1.0/d;q=(l2.a*l1.c-l1.a*l2.c)*1.0/d;return 1;}int pointonline(point p,line l)//判断点在直线上{if(p.x*l.a+p.y*l.b+l.c==0)return 1;return 0;}int main(){point p1,p2,p3,p4;double p,q;line l1,l2;int t;scanf("%d",&t);printf("INTERSECTING LINES OUTPUT\n");while(t--){scanf("%d%d%d%d%d%d%d%d",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y);l1=ppline(p1,p2);l2=ppline(p3,p4);if(lineintersect(l1,l2,p,q))//有交点printf("POINT %.2f %.2f\n",p,q);else if(pointonline(l2.p1,l1))//  在同一直线上printf("LINE\n");else printf("NONE\n");}printf("END OF OUTPUT\n");return 0;}

读书人网 >编程

热点推荐