1 // 直线相交 POJ 1269
2
3 // #include <bits/stdc++.h>
4 #include <iostream>
5 #include <cstdio>
6 #include <cstdlib>
7 #include <algorithm>
8 #include <math.h>
9 using namespace std;
10 #define LL long long
11 typedef pair<int,int> pii;
12 const double inf = 123456789012345.0;
13 const LL MOD =100000000LL;
14 const int N =1e4+10;
15 #define clc(a,b) memset(a,b,sizeof(a))
16 const double eps = 1e-8;
17 void fre() {freopen("in.txt","r",stdin);}
18 void freout() {freopen("out.txt","w",stdout);}
19 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1; ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
20
21 int sgn(double x){
22 if(fabs(x) < eps)return 0;
23 if(x < 0)return -1;
24 else return 1;
25 }
26 struct Point{
27 double x,y;
28 Point(){}
29 Point(double _x,double _y){
30 x = _x;y = _y;
31 }
32 Point operator -(const Point &b)const{
33 return Point(x - b.x,y - b.y);
34 }
35 double operator ^(const Point &b)const{
36 return x*b.y - y*b.x;
37 }
38 double operator *(const Point &b)const{
39 return x*b.x + y*b.y;
40 }
41 };
42
43 struct Line{
44 Point s,e;
45 Line(){}
46 Line(Point _s,Point _e){
47 s=_s;e=_e;
48 }
49 pair<int,Point> operator & (const Line &b) const{
50 Point res=s;
51 if(sgn((s-e)^(b.s-b.e))==0){
52 if(sgn((s-b.e)^(b.s-b.e))==0)
53 return make_pair(0,res);
54 else return make_pair(1,res);
55 }
56 double t=((s-b.s)^(b.s-b.e))/((s-e)^(b.s-b.e));
57 res.x+=(e.x-s.x)*t;
58 res.y+=(e.y-s.y)*t;
59 return make_pair(2,res);
60 }
61 };
62
63 int main(){
64 int T;
65 scanf("%d",&T);
66 double x1,x2,x3,x4,y1,y2,y3,y4;
67 printf("INTERSECTING LINES OUTPUT\n");
68 while(T--){
69 scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
70 Line line1 = Line(Point(x1,y1),Point(x2,y2));
71 Line line2 = Line(Point(x3,y3),Point(x4,y4));
72 pair<int,Point> ans=line1 & line2;
73 if(ans.first==0) printf("LINE\n");
74 else if(ans.first==1) printf("NONE\n");
75 else printf("POINT %.2f %.2f\n",ans.second.x,ans.second.y);
76 }
77 printf("END OF OUTPUT\n");
78 return 0;
79 }