Intersection Point of Two Line Segments Given two line segments, determine if the line segments intersect and if so, where. In the case that the two given line segments are co-linear and overlap, determine the midpoint of the overlapping segment. Lines will be specified in pairs of (x, y) coordinates.

Examples


[(-1, -1), (1, 1)], [(-1, 1), (1, -1)] => (0, 0)
[(-1, -1), (1, -1)], [(-1, 1), (1, 1)] => No intersection
[(-2, 0), (1, 1.32)], [(-1, 0.44), (2, 1.76)] => (0, 0.88)
[(-2, -2), (0, 0)], [(1, -1), (1, 1)] => No intersection


Rules


Standard rules and loopholes apply
Input and output may be in any convenient format. Please state your convention along with your solution.


Examples for output conventions would be null for no intersection and a point for an intersection; a boolean and a tuple; string output in (x, y) format or "no intersection"; x and y will be NaN for no intersection. Other conventions are allowed, but these may give you a good starting point.

A minimum of 2 decimal places (or equivalent) precision is required.
Final results should be accurate to within 0.01 when at a scale of -100 - +100. (32-bit floats will be more than accurate enough for this purpose)
This is code-golf, so shortest code wins.




Related: This is not a duplicate of 2D Collision Detection because it only concerns line-line tests and requires an intersection point for intersecting line segments. This is also not a duplicate of Intersection of Two Lines because this concerns line segments specified with two endpoints rather than functions.
R, 95 bytes



function(m,a=c(1,3),r=range){plot(0,,"n",r(m[a,]),r(m[-a,]));segments(m[1,],m[2,],m[3,],m[4,])}


Try it online!

Here's a graphical solution as an appetizer while I'm working on a full-blown solution.
TIO link will not plot anything.