pku 1269 Intersecting Lines(求两直线交点,解二元二次方程)

给定4个点坐标,前2个点确定一条直线,后2个点确定一条直线。判断2直线的关系:重合,平行,相交。如果相交,给出交点坐标。

根据点坐标,可以给出两个直线方程。

ax+b=cy

dx'+e=fy'

#include <iostream> using namespace std; int main() { int N,x1,x2,x3,x4,y1,y2,y3,y4; int a,b,c,d,e,f; scanf("%d",&N); printf("INTERSECTING LINES OUTPUT/n"); for(int i=0;i<N;i++) { scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); a=y2-y1; b=x2*y1-x1*y2; c=x2-x1; d=y4-y3; e=x4*y3-x3*y4; f=x4-x3; if(a*f==c*d)//两直线斜率相等 { if(b*f==e*c&&b*d==e*a)//两直线重合 { printf("LINE/n"); continue; } else { printf("NONE/n");//两直线平行但不重合 continue; } } else//斜率不相等,必有交点 { double y=((double)(a*e-b*d))/(a*f-c*d); double x=(y*c-b)/a; printf("POINT %.2f %.2f/n",x,y); } } printf("END OF OUTPUT/n"); return 0; }

你可能感兴趣的:(pku 1269 Intersecting Lines(求两直线交点,解二元二次方程))