class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Line: def __init__(self, point_a=None, point_b=None): self.point_A = point_a if point_a is not None else Point() self.point_B = point_b if point_b is not None else Point() def find_meeting_point(line_A, line_B): # TODO: 求直线 line_A 与 line_B 的交点 #两条直线无斜率 if line_A.point_A.x==line_A.point_B.x and line_B.point_A.x==line_B.point_B.x : return Point(-1,-1) elif line_A.point_A.y==line_A.point_B.y and line_B.point_A.y==line_B.point_B.y : return Point(-1,-1) #一条直线无斜率 elif line_A.point_A.x==line_A.point_B.x: xieluB=(line_B.point_A.y-line_B.point_B.y)/(line_B.point_A.x-line_B.point_B.x) y=xieluB*(line_A.point_A.x-line_B.point_A.x)+line_A.point_A.y return Point(line_A.point_A.x,y) elif line_B.point_A.x==line_B.point_B.x: xieluA=(line_A.point_A.y-line_B.point_B.y)/(line_A.point_A.x-line_B.point_B.x) y=xieluA*(line_B.point_A.x-line_A.point_A.x)+line_B.point_A.y return Point(line_B.point_A.x,y) #都有斜率 xielua=(line_A.point_A.y-line_A.point_B.y)/(line_A.point_A.x-line_A.point_B.x) xielub=(line_B.point_A.y-line_B.point_B.y)/(line_B.point_A.x-line_B.point_B.x) b1=line_A.point_A.y-xielua*line_A.point_A.x b2=line_B.point_A.y-xielub*line_B.point_A.x x=(b2-b1)/(xielua-xielub) y=xielua*x+b1 return Point def main(): data = list(map(float, input().split())) data.extend(list(map(float, input().split()))) A = Point(data[0], data[1]) B = Point(data[2], data[3]) C = Point(data[4], data[5]) D = Point(data[6], data[7]) AB = Line(A, B) CD = Line(C, D) ans = find_meeting_point(AB, CD) print(f"{ans.x} {ans.y}") if __name__ == "__main__": main()