#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; #define EPS 1e-9 #define inf 1e10 int n; bool pp(double x1,double x2)//这里是由于精度的问题,判断是否相等 { if(abs(x1-x2)<EPS) return true; return false; } double solve(double x1,double y1,double x2,double y2)//求斜率 { if(pp(x1,x2))return inf; return (y2-y1)/(x2-x1); } int main() { while(scanf("%d",&n)!=EOF) { printf("INTERSECTING LINES OUTPUT\n"); for(int i=1; i<=n; i++) { double x1,y1,x2,y2,x3,y3,x4,y4; scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); double k1=solve(x1,y1,x2,y2); double k2=solve(x3,y3,x4,y4); if(pp(k1,k2)) { if((pp(x1,x2)&&pp(x1,x3))||pp(y1-k1*x1,y3-k2*x3))//判断是否重合 printf("LINE\n"); else printf("NONE\n"); } else { double c1=y1-x1*k1; double c2=y3-x3*k2; printf("POINT %.2lf %.2lf\n",(c2-c1)/(k1-k2),k1*(c2-c1)/(k1-k2)+c1);//利用方程组来解X,Y } } printf("END OF OUTPUT\n"); } return 0; }
poj 1269 判断直线相交,并求交点
最新推荐文章于 2020-06-28 11:02:09 发布