А вот и имплементация:
Global Px#, Py#
Function LineLineIntersect(L1x1, L1y1, L1x2, L1y2, L2x1, L2y1, L2x2, L2y2)
Local L2x2_L2x1# = L2x2 - L2x1
Local L2y2_L2y1# = L2y2 - L2y1
Local L1x2_L1x1# = L1x2 - L1x1
Local L1y2_L1y1# = L1y2 - L1y1
Local Den# = L2y2_L2y1 * L1x2_L1x1 - L2x2_L2x1 * L1y2_L1y1
If (Den <> 0) Then
Local L1x1_L2x1# = L1x1 - L2x1
Local L1y1_L2y1# = L1y1 - L2y1
Local Ua# = (L2x2_L2x1 * L1y1_L2y1 - L2y2_L2y1 * L1x1_L2x1) / Den
Local Ub# = (L1x2_L1x1 * L1y1_L2y1 - L1y2_L1y1 * L1x1_L2x1) / Den
If (Ua > 0) And (Ua < 1.0) And (Ub > 0) And (Ub < 1.0) Then
Px = L1x1 + Ua * L1x2_L1x1
Py = L1y1 + Ua * L1y2_L1y1
Return True
EndIf
EndIf
Return False
End Function
Graphics(640, 480, 16, 2)
SetBuffer(BackBuffer())
Repeat
If KeyHit(57) Then
Cls()
L1x1 = Rand(1, 639)
L1y1 = Rand(1, 479)
L1x2 = Rand(1, 639)
L1y2 = Rand(1, 479)
Color(0, 0, 255)
Line(L1x1, L1y1, L1x2, L1y2)
L2x1 = Rand(1, 639)
L2y1 = Rand(1, 479)
L2x2 = Rand(1, 639)
L2y2 = Rand(1, 479)
Color(0, 255, 0)
Line(L2x1, L2y1, L2x2, L2y2)
If LineLineIntersect(L1x1, L1y1, L1x2, L1y2, L2x1, L2y1, L2x2, L2y2)
Color(255, 0, 0)
Oval(Px - 4, Py - 4, 8, 8)
EndIf
EndIf
Flip()
Until KeyDown(1)
End
немного нечитабельно из-за оптимизации, но думаю сойдет