#include<bits/stdc++.h> #include <ios> #include <iostream> using namespace std; struct point{ double x,y; point(double A,double B){ x=A,y=B; } point() = default; }; struct line{ point point_A,point_B; line(point A,point B){ point_A = A,point_B = B; } line() = default; }; point findMeetingPoint(line line_A,line line_B){ // TODO:求直线 line_A 与 line_B 的交点 double A1 = line_A.point_B.y - line_A.point_A.y; double B1 = line_A.point_A.x - line_A.point_B.x; double C1 = line_A.point_B.x * line_A.point_A.y - line_A.point_A.x * line_A.point_B.y; double A2 = line_B.point_B.y - line_B.point_A.y; double B2 = line_B.point_A.x - line_B.point_B.x; double C2 = line_B.point_B.x * line_B.point_A.y - line_B.point_A.x * line_B.point_B.y; double denominator = A1 * B2 - A2 * B1; if (fabs(denominator) < 1e-10){ return point(-1, -1); } else { double x = (B1 * C2 - B2 * C1) / denominator; double y = (A2 * C1 - A1 * C2) / denominator; cout << fixed << setprecision(8); return point(x, y); } } int main(){ point A,B,C,D; cin>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y>>D.x>>D.y; line AB=line(A,B); line CD=line(C,D); point ans = findMeetingPoint(AB,CD); cout<<ans.x<<" "<<ans.y; return 0; }