http://algolist.manual.ru/maths/geom/intersect/lineline2d.php
- Код: Выделить всё
'Упрощенный алгоритм. Без вычисления точки пересечения
Public Function IsLinesCrossLight(ByVal x1!, ByVal y1!, ByVal x2!, ByVal y2!, _
ByVal x3!, ByVal y3!, ByVal x4!, ByVal y4!) _
As Boolean
Dim Ua!, Ub!, znam!
znam = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)
Ua = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)
Ub = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)
If znam = 0.0! Then Return False
Ua = Ua / znam
Ub = Ub / znam
Dim LineAHaveCross As Boolean = ((Ua >= 0.0!) And (Ua <= 1.0!))
Dim LineBHaveCross As Boolean = ((Ub >= 0.0!) And (Ub <= 1.0!))
If (LineAHaveCross And LineBHaveCross) Then
Return True
End If
Return False
End Function